Linux openssh 升级至openssh-8.5p1
缘起
时隔多日,客户服务器进行安全扫描,我则负责为服务器升级或者打上补丁。
软件包下载地址
下载地址列表:
http://www.openssh.com/portable.html#http
http://www.openssh.com/portable.html#ftp
http://www.openssh.com/portable.html#rsync
点击下载地址,如下,选择自己对应的版本
https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/
我需要下载的是8.5版本,下载地址:
https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.5p1.tar.gz
下载软件包
安装依赖包,通过yum安装命令:
yum install gcc zlib-devel openssl-devel pam-devel libselinux-devel zlib-devel openssl-devel -y
离线安装命令,以下附教程地址(同一套):
gcc
安装教程地址: Linux 离线安装软件 gcc
zlib、openssl、pem
安装教程地址:Linux 离线安装软件 zlib、openssl、pam
执行命令下载编译:
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.5p1.tar.gz
tar -zxvf openssh-8.5p1.tar.gz
cd openssh-8.5p1
#配置->此处若发生异常,查看文末解决方案
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-zlib --with-tcp-wrappers --with-ssl-dir=/usr/local/ssl --without-hardening
#编译
make && make install
编译以后出现如下提示,文件已存在,未覆盖,可以删除指定文件后重新安装,命令如下:
rm -rf /usr/local/etc/ssh_config /usr/local/etc/sshd_config /usr/local/etc/moduli
make && make install
#备份重要文件
mv /etc/pam.d/sshd.pam /etc/pam.d/sshd.pam_bak
mv /etc/init.d/sshd /etc/init.d/sshd_bak
#复制配置文件
cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
cp -a contrib/redhat/sshd.init /etc/init.d/sshd
#设置权限
chmod u+x /etc/init.d/sshd
修改配置文件,命令:
vim /etc/ssh/sshd_config
设置PermitRootLogin
参数为yes
,设置PasswordAuthentication
为yes
截图如下:
重启并设置开机启动,命令如下:
#重启服务
systemctl restart sshd
#设置开机启动
systemctl enable sshd
#也可以以下命令设置
chkconfig --add sshd
chkconfig sshd on
重启完毕,执行以下命令查看ssh版本,命令如下:
ssh -V
当显示以下结果表示升级成功,如图:
升级过程中出现的问题及解决方案
问题1:configure: error: PAM headers not found
解决方案
查看依赖包是否正确安装,若确认安装没问题,请重新安装 pam-devel,命令:
yum install gcc zlib-devel openssl-devel pam-devel libselinux-devel zlib-devel openssl-devel -y
安装后重新从编译步骤 ./configure
往下依次执行即可。
问题二:Job for sshd.service failed because a timeout was exceeded. See “systemctl status sshd.service” and “journalctl -xe” for details.
解决方案
在执行systemctl restart sshd
时时间过长,等带一段时间之后,执行失败,可以通过systemctl status sshd.service
命令查看具体错误原因,如下图:
从图中可以看出是/etc/ssh/sshd_config
中参数问题,我们编辑此文件,注释掉这两个参数,如下:
修改前内容:
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no
#GSSAPIEnablek5users no
修改后内容:
#GSSAPIAuthentication yes
#GSSAPICleanupCredentials no
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no
#GSSAPIEnablek5users no
保存后重启服务systemctl restart sshd
。
问题三:重启服务失败且找不到具体原因
解决方案
建议卸载后重新安装,在各种方法都重试以后,发现都没效果,果断卸载,重新按照步骤来了一遍,安装成功。