Linux Centos7内网服务器离线升级openssh9.3

内网服务器需要升级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

扫描二维码关注公众号,回复: 16685134 查看本文章

        以上安装包链接: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

猜你喜欢

转载自blog.csdn.net/weixin_45087884/article/details/130970145