CentOS7.X从OpenSSH7.4p1升级到OpenSSH8.4p1
升级前准备工作
确认操作系统版本和OpenSSH版本
确认操作系统版本为CentOS7.X,OpenSSH版本为7.4p1
1 | cat /etc/redhat-release |
说明
如果OpenSSH不是7.4p1可通过执行yum install openssh -y
命令升级到7.4p1
配置telnet服务
说明
为了防止升级失败导致服务器无法登录,建议在升级前安装并配置telnet服务。
执行以下命令安装xinetd
和telnet-server
1 | yum install xinetd telnet-server -y |
新建/etc/xinetd.d/telnet
文件,添加以下内容
1 | service telnet |
编辑/etc/securetty
文件,在文件末尾增加pts终端,如下:
1 | pts/0 |
启动xinetd
和telnet
服务并设置开机自启
1 | systemctl enable xinetd |
查看telnet
端口是否正常监听
1 | netstat -ntple |grep 23 |
说明
配置完成后请在本地通过telnet客户端或者SecureCRT、XShell等工具测试是否可以正常连接
下载安装包
到官网下载zlib
、OpenSSL
、OpenSSH
的安装包并上传到/root
目录下
- zlib下载地址:http://www.zlib.net/fossils/
- OpenSSL下载地址:https://www.openssl.org/source/
- OpenSSH下载地址:http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/
说明
本文下载的zlib
版本为1.2.13
、OpenSSL
版本为1.1.1s
、OpenSSH
版本为8.4p1
正式升级
安装编译所需的依赖包
执行以下命令安装gcc
等软件
1 | yum install gcc gcc-c++ kernel-devel -y |
安装zlib
解压zlib
安装包到/usr/local/src/
1 | tar zxf zlib-1.2.13.tar.gz -C /usr/local/src/ |
编译并安装zlib
1 | cd /usr/local/src/zlib-1.2.13/ |
安装OpenSSL
解压OpenSSL
安装包到/usr/local/src/
1 | tar zxf openssl-1.1.1s.tar.gz -C /usr/local/src/ |
安装perl
1 | yum install perl -y |
说明
执行./config
时需要Perl5版本,否则会提示You need Perl 5.
编译并安装OpenSSL
1 | cd /usr/local/src/openssl-1.1.1s/ |
将OpenSSL
动态库路径添加到/etc/ld.so.conf
中
1 | echo '/usr/local/ssl-1.1.1s/lib/' >> /etc/ld.so.conf |
安装OpenSSH
解压OpenSSH
安装包到/usr/local/src/
1 | tar zxf openssh-8.4p1.tar.gz -C /usr/local/src/ |
编译并安装OpenSSH
1 | mv /etc/ssh /etc/ssh-7.4p1.bak |
修改/etc/ssh/sshd_config
配置文件
1 | echo "X11Forwarding yes" >> /etc/ssh/sshd_config |
备份/usr/sbin
和/usr/sbin
下SSH原有二进制文件
1 | mkdir -p /usr/sbin/openssh-7.4p1 |
将新版本OpenSSH
文件拷贝到指定目录
1 | cp -a /usr/local/openssh-8.4p1/sbin/sshd /usr/sbin/sshd |
查看OpenSSH
版本
1 | ssh -V |
启动新版本SSHD服务
1 | systemctl stop sshd |
版本回退
说明
如果升级后无法正常使用,可参照以下步骤进行版本回退
关闭SSHD服务,恢复服务启动文件
1 | systemctl stop sshd |
恢复OpenSSH
原有二进制文件
1 | rm -rf /usr/sbin/sshd |
恢复OpenSSH
配置目录
1 | mv /etc/ssh /etc/ssh-8.4p1.bak |
查看OpenSSH
版本
1 | ssh -V |
重新启动旧版本SSD服务
1 | systemctl restart sshd |
关闭xinetd和telnet
升级完成后请及时关闭xinetd
和telnet
服务
1 | systemctl disable xinetd |