把openssh升级到8.1版本各种坑都能解决无敌

下载相应的软件包:

yum install wget gcc -y
yum group install 'Development Tools' -y
yum install -y zlib-devel openssl-devel
yum install pam-devel libselinux-devel zlib-devel openssl-devel -y

从网上下载8.1版本的压缩包:

我这边提供的软件包是 openssh-8.1p1.tar.gz

wget https://cloudflare.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.1p1.tar.gz

解压进入解压目录:

tar -xzf openssh-8.1p1.tar.gz
cd openssh-8.1p1/

编译:

./configure --prefix=/usr/ --with-md5-passwords --with-pam --with-zlib --sysconfdir=/etc/ssh

做备份:

mkdir /tmp/backup
mv /etc/ssh/* /tmp/backup

安装:

make && make install

删除新生成的ssh信息,把原先的移回来:

rm -rf /etc/ssh/*
cp /tmp/backup/* /etc/ssh/ -r

修改权限:

这是一个坑,如果不修改权限,它后面服务起不来报错会出现权限问题

chmod -R 600 /etc/ssh/*

拷贝文件添加自启服务ssh:

cp -a contrib/redhat/sshd.init /etc/init.d/sshd
cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam
chmod +x /etc/init.d/sshd
chkconfig --add sshd
systemctl enable sshd
mv /usr/lib/systemd/system/sshd.service /tmp
chkconfig sshd on

这是你输入chkconfig sshd on 会出现以下这样的字样是对的,但是在你执行mv /usr/lib/systemd/system/sshd.service /tmp 这条命令可能会出现这个/usr/lib/systemd/system/sshd.service不存在,那你也继续执行,这个可能环境不一样可能会有误差
相关图片

执行以下操作:

vim /etc/ssh/sshd_config #回车进去里面后
找到"PermitRootLogin yes"这行
如果有#,把#去掉,如果是其他的改成“PermitRootLogin yes”就行

这个当你mv /usr/lib/systemd/system/sshd.service /tmp这条命令能执行的话需要执行以上这个操作,若执行不成功,则无需执行这个操作。

重启sshd服务:

systemctl restart sshd

查看更新后的sshd版本:

cd /usr/bin
./ssh -V  # 查看守护进程sshd的版本
ssh -V  # 查看sshd版本

总结:

在升级过程中,遇到了许多 问题,很多坑,例如你ssh -V 查看ssh版本,是升级后的,但你进到/usr/bin下,./ssh -V 会看见居然是原来的版本,我们又在网上找办法,然后就是都升级完成后,退出SSH居然登不上了,原来是新版本的ssh的是/etc/ssh/sshd_config配置不对,常见的修改配置有:PermitRootLogin yes、PubkeyAuthentication yes、PasswordAuthentication yes,还有就是否是selinux启用了策略,得把它disable的掉等等,我这篇升级SSH应该不会有毛病了,安装包得下载对喽。

最后修改:2020 年 12 月 13 日 10 : 49 PM