服务器版本:

1
2
# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)

升级前ssh版本:

1
2
# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017

升级后ssh版本:

1
2
# ssh -V
OpenSSH_8.0p1, OpenSSL 1.0.2k-fips 26 Jan 2017

为防止升级失败无法远程连接,安装telnet:

1
2
3
4
# yum install -y telnet-server
# yum install -y xinetd
# systemctl start telnet.socket
# systemctl start xinetd

允许root登录:

1
2
3
# echo 'pts/0' >>/etc/securetty
# echo 'pts/1' >>/etc/securetty
# systemctl restart telnet.socket

开启telnet和xinetd开机自动启动,避免reboot后连不上Telnet:

1
2
# systemctl enable xinetd.service
# systemctl enable telnet.socket

测试一下telnet连接,然后就可以先放着了,这只是以防万一,接下来还是正常使用ssh连接操作

下载最新版本的包(openssh-8.0p1.tar.gz)并上传到服务器上

备份文件:

1
# cp -r /etc/ssh /etc/ssh.old

卸载旧的ssh:

1
2
3
4
5
6
7
8
# rpm -qa|grep openssh
openssh-server-7.4p1-11.el7.x86_64
openssh-7.4p1-11.el7.x86_64
openssh-clients-7.4p1-11.el7.x86_64
# rpm -e --nodeps openssh-server-7.4p1-11.el7.x86_64
# rpm -e --nodeps openssh-7.4p1-11.el7.x86_64
# rpm -e --nodeps openssh-clients-7.4p1-11.el7.x86_64
# rpm -qa|grep openssh

安装:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# install -v -m700 -d /var/lib/sshd
# chown -v root:sys /var/lib/sshd
# groupadd -g 50 sshd
# useradd -c 'sshd PrivSep' -d /var/lib/sshd -g sshd -s /bin/false -u 50 sshd
# tar -zxvf openssh-8.0p1.tar.gz
# cd openssh-8.0p1
# ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-privsep-path=/var/lib/sshd
# make
# chmod 600 /etc/ssh/ssh_host_rsa_key
# chmod 600 /etc/ssh/ssh_host_ecdsa_key
# chmod 600 /etc/ssh/ssh_host_ed25519_key
# make install
# install -v -m755 contrib/ssh-copy-id /usr/bin
# install -v -m644 contrib/ssh-copy-id.1 /usr/share/man/man1
# install -v -m755 -d /usr/share/doc/openssh-8.0p1
# install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-8.0p1

设置允许root登录:

1
# echo "PermitRootLogin yes" >> /etc/ssh/sshd_config

设置开机自启动:

1
2
3
4
5
6
# cp -p contrib/redhat/sshd.init /etc/init.d/sshd
# chmod +x /etc/init.d/sshd
# chkconfig --add sshd
# chkconfig sshd on
# chkconfig --list sshd
# systemctl restart sshd

升级完成,查看版本:

1
2
# ssh -V
OpenSSH_8.0p1, OpenSSL 1.0.2k-fips 26 Jan 2017

PS1:升级完成后别忘了恢复以前的telnet设置或关闭telnet.

PS2:如果中间有问题升级失败,且之前是rpm包安装的,可以直接以下命令进行回滚:

1
2
3
# yum -y install openssh-clients
# yum -y install openssh-server
# yum -y install openssh