CentOS7.9升级OpenSSH9.9

升级环境

系统为 CentOS7.9 版本，OpenSSH 版本为默认的 7.4 版本

软件包准备

准备一台可以上网的 CentOS7.9 的虚拟机，下载 telnet 相关的 rpm 包离线使用

Copy
yum install --downloadonly --downloaddir=. xinetd telnet telnet-server

新版 OpenSSH 的 rpm 包可以使用 Github 上开源脚本打包

Copy
https://github.com/boypt/openssh-rpms

升级 openssh 前开启 telnet (可选)

离线安装 telnet 服务，使用 rpm 命令安装 telnet

telnet 服务需要安装 telnet-server 和 xinetd 两个包，telnet 是客户端工具

启动 xinetd.service 和 telnet.socket 服务

Copy
systemctl restart xinetd.service telnet.socket

使用 root 登录需要在/etc/securetty文件结尾添加 pts 终端

Copy
[root@localhost ~]# echo pts/0 >> /etc/securetty
[root@localhost ~]# echo pts/1 >> /etc/securetty

若服务器启用了防火墙，需要放行下 telnet

Copy
[root@localhost ~]# firewall-cmd --add-service=telnet

此时可以使用 telnet 登录服务器了

升级 OpenSSH

由于打包成了 rpm 包，所以比起源码编译简单多了，可以使用 rpm 命令升级

使用 rpm -Uvh 直接升级即可

解压并安装 rpm 包，安装前最好将原来的 ssh 配置备份

Copy
[root@localhost ~]# tar xf openssh-9.9p1-1.el7.tar.gz
[root@localhost ~]# mv /etc/ssh /etc/ssh.bak
[root@localhost ~]# rpm -Uvh openssh*.rpm

安装完成新版 openssh 后重启 sshd, 并修改为开机启动

sshd 服务正常启动，但是有一个错误提示，openssh9.9 版本默认禁用了 dsa

/sbin/restorecon: lstat(/etc/ssh/ssh_host_dsa_key.pub) failed: No such...

修改配置文件取消加载 dsa_key

修改后重新加载配置并重启 sshd 服务，报错信息消失

openssh 升级完成