一、环境信息
操作系统:Ubuntu 22.04.2 LTS
OpenSSH_8.9p1, OpenSSL 3.0.2 15 Mar 2022
如下图所示:
注意:升级后由于加密算法的区别,低版本的SSH工具可能无法连接,建议改用Xshell7或SecureCRT9.0以上版本。
二、注意事项
1、检查防火墙或selinux是否关闭。
2、建议安装telnet,防止ssh安装失败无法连接。
3、新前一定要多开1个或1个以上ssh终端,一旦更新失败当前shell终端是无法操作的,也就无法进行版本回退。
4、升级前一定要对ssh进行备份,避免更新失败时能回滚。
5、升级前一定要提前在测试环境验证,运行一段时间,确认没有问题才可在生产环境进行更新操作。
6、对于生产环境主机数量比较多时,建议先在1台或几台服务器上更新,运行一段时间,确认没有问题再执行批量更新操作。
总结:对于以上需要注意的内容,建议大家务必重视,小心谨慎总没错的。
三、升级步骤
3.1、安装telnet
注意:安装telnet,防止ssh安装失败无法连接。
1、安装Telnet
注意:一般Linux系统自带Telnet客户端,我们只需要安装服务端即可;另外Telnet运行需要依靠xinetd组件,安装命令如下所示:
apt update
apt-get install openbsd-inetd -y
apt-get install telnetd -y
2、运行telnet服务
vim /etc/inetd.conf
telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd
/etc/init.d/openbsd-inetd restart
3、使用telnet协议连接服务器,如下图所示:
3.1、准备工作
1、安装依赖
root@iZbp1h6ve4a68q7h9zbqkfZ:~# apt update
root@iZbp1h6ve4a68q7h9zbqkfZ:~# apt install libssl-dev build-essential libncurses5-dev zlib1g-dev -y
root@iZbp1h6ve4a68q7h9zbqkfZ:~# wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
root@iZbp1h6ve4a68q7h9zbqkfZ:~# tar axf openssh-9.8p1.tar.gz
root@iZbp1h6ve4a68q7h9zbqkfZ:~# cd openssh-9.8p1
3、环境检查
注意:安装openssh9.8要求openssl版本为1.1.1或者更高版本,zlib版本为1.1.4或者1.2.1.2或者更高版本。
说明:当前系统环境openssl版本为3.0.2,zlib版本为1.2.11,符合升级要求。如果你的环境不符合,需要对其进行升级。
3.2、备份文件
1、备份/etc/ssh目录
mv /etc/ssh /etc/ssh.bak
2、备份二进制文件
mkdir /usr/bin/bak
\cp -arpf /usr/bin/scp /usr/bin/bak/scp
\cp -arpf /usr/bin/sftp /usr/bin/bak/sftp
\cp -arpf /usr/bin/ssh /usr/bin/bak/ssh
\cp -arpf /usr/bin/ssh-add /usr/bin/bak/ssh-add
\cp -arpf /usr/bin/ssh-agent /usr/bin/bak/ssh-agent
\cp -arpf /usr/bin/ssh-keygen /usr/bin/bak/ssh-keygen
\cp -arpf /usr/bin/ssh-keyscan /usr/bin/bak/ssh-keyscan
3.3、编译安装openssh
1、进入openssh-9.8p1目录,执行编译安装命令
./configure --prefix=/usr/local/openssh-9.8p1 --sysconfdir=/etc/ssh && make && make install
2、替换新版本openssh相关命令
mv /usr/sbin/sshd /usr/sbin/sshd.bak
\cp /usr/local/openssh-9.8p1/sbin/sshd /usr/sbin/
\cp -arpf /usr/local/openssh-9.8p1/bin/* /usr/bin/
3、修改配置文件
sed -i 's@#PermitRootLogin prohibit-password@PermitRootLogin yes@g' /etc/ssh/sshd_config
4、设置开机启动,并验证版本
sshd -t
systemctl daemon-reload && systemctl enable ssh.socket && systemctl restart sshd
如下图所示:
7、重启服务器,以root用户登录服务器
六、版本回退
1、回滚前:
root@iZbp1h6ve4a68q7h9zbqkfZ:~# ssh -V
OpenSSH_9.8p1, OpenSSL 3.0.2 15 Mar 2022
root@iZbp1h6ve4a68q7h9zbqkfZ:~# sshd -V
OpenSSH_9.8p1, OpenSSL 3.0.2 15 Mar 2022
2、回滚openssh:
\mv /etc/ssh.bak /etc/ssh
\mv /usr/bin/bak/* /usr/bin/
\mv /usr/sbin/sshd.bak /usr/sbin/sshd
3、重启sshd服务
sshd -t
systemctl daemon-reload && systemctl enable ssh.socket && systemctl restart sshd
4、回滚后:
root@localhost:~# ssh -V
OpenSSH_8.9p1 Ubuntu-3ubuntu0.6, OpenSSL 3.0.2 15 Mar 2022
root@iZbp1h6ve4a68q7h9zbqkfZ:~# sshd -V
unknown option -- V
OpenSSH_8.9p1 Ubuntu-3ubuntu0.1, OpenSSL 3.0.2 15 Mar 2022
usage: sshd [-46DdeiqTt] [-C connection_spec] [-c host_cert_file]
[-E log_file] [-f config_file] [-g login_grace_time]
[-h host_key_file] [-o option] [-p port] [-u len]
如下图所示:
七、一键更新工具
ARM64架构基于Ubuntu 22.04.2之OpenSSH8.9升级版本至9.8一键更新工具
总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:Linux运维实战总结