内网服务器需要升级openssh,被折磨了一整天,觉得有必要记录一下,不然对不起这差点崩溃的一天,主要的几个难点就是不能yum一键安装,需要自己找到对应的依赖版本然后通过堡垒机上传到内网,还有就是服务器很干净,什么都没有,需要离线安装的包太多,又不知道依赖关系,另外个问题就是这次升级了10台服务器,每台服务器的已有的包都不同,有些缺的多有些缺的少,中间还把服务器搞挂一次,因为卸载了ssh导致无法登陆,所以卸载的时候请慎重,最好保证已经安装了telnet和vsftp可以进行登陆和文件上传
1.安装包准备
xinetd-2.3.15-14.el7.x86_64.rpm
telnet-0.17-65.el7_8.x86_64.rpm
telnet-server-0.17-65.el7_8.x86_64.rpm
gcc-4.8.5-44.el7.x86_64.rpm
gcc-c++-4.8.5-44.el7.x86_64.rpm
openssh-9.3p1.tar.gz
openssl-devel-1.0.2k-25.el7_9.x86_64.rpm
pam-devel-1.1.8-23.el7.x86_64.rpm
zlib-devel-1.2.7-20.el7_9.x86_64.rpm
zlib-1.2.7-20.el7_9.x86_64.rpm
kernel-headers-3.10.0-1160.el7.x86_64.rpm
以上安装包链接:https://pkgs.org/
2.安装telnet,避免openssh安装过程中断时服务器无法登陆
1.rpm安装
rpm -ivh xinetd-2.3.15-14.el7.x86_64.rpm
rpm -ivh telnet-0.17-65.el7_8.x86_64.rpm
rpm -ivh telnet-server-0.17-65.el7_8.x86_64.rpm
2.启动telnet
service xinetd restart
systemctl restart telnet.socket
3.安装openssh
1.将openssh9.3安装包解压
tar -zxvf openssh-9.3p1.tar.gz
cd openssh-9.3p1
2.备份配置文件
cp /etc/ssh/sshd_config sshd_config.backup
cp /etc/pam.d/sshd sshd.backup
3.编译配置
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-zlib --with-md5-passwords --with-pam
注意:这一步不能出现错误,如果出现错误一般是缺少依赖,缺少哪个就安装上面准备的包即可,基本上根据名字就能看出是哪个包,稍有不同的下面已经列出来了
这个问题是 c语言编译环境不对,这个是最麻烦的问题,因为找不到缺少了哪些包,查看config.log会提示缺少某个文件,一般是缺少gcc,gcc-c++,kernel-headers等,把这几个安装上再试试
rpm -ivh kernel-headers-3.10.0-1160.el7.x86_64.rpm --nodeps --force
rpm -ivh gcc-c++-4.8.5-44.el7.x86_64.rpm --nodeps --force
rpm -ivh gcc-4.8.5-44.el7.x86_64.rpm --nodeps --force
这个是缺少openssl,安装openssl即可
rpm -ivh openssl-devel-1.0.2k-25.el7_9.x86_64.rpm --nodeps --force
编译结果如下图即为成功
4.卸载旧版本,务必上一步完成之后再进行这一步,因为旧版本卸载之后将无法使用ssh登陆服务器和上传文件
rpm -e --nodeps `rpm -qa | grep openssh`
5.编译安装
make && make install
如下图即为成功
6.调整文件权限
chmod 600 /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ed25519_key
7.复制配置文件
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
chmod u+x /etc/init.d/sshd
8.还原之前备份的配置文件
cp sshd_config.backup /etc/ssh/sshd_config
cp sshd.backup /etc/pam.d/sshd
9.设置root用户可以远程登陆
sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config
10.设置开机自动启动
chkconfig --add sshd
chkconfig sshd on
11.重启ssh
systemctl restart sshd
12.验证
ssh -V