手把手带你学 | openEuler怎么把OpenSSH升级到最新版9.8p1
经常与网络运维打交道的同学对于OpenSSH一定不陌生,它用于远程登录、远程执行命令、文件传输等。在2024年7月,OpenSSH 官方发布安全通告,披露CVE-2024-6387 OpenSSH Server远程代码执行漏洞。受影响的版本,8.5p1 <= OpenSSH < 9.8p1,鉴于该漏洞危害较大,建议受影响的系统尽快修复该漏洞。 那么本篇来带你学openEuler怎么把OpenSSH升级到最新版9.8p1。经过测试适用于openEuler 20.03 (LTS-SP3)、openEuler 22.03 (LTS-SP3)和CentOS 7.6,其他版本也可参考测试。
1.查看系统信息
在openEuler 22.03版本中,默认OpenSSH版本为8.8p1 OpenSSL版本为1.1.1
[root@bogon ~]# uname -a
Linux bogon 5.10.0-182.0.0.95.oe2203sp3.x86_64 #1 SMP Sat Dec 30 13:10:36 CST 2023 x86_64 x86_64 x86_64 GNU/Linux
[root@bogon ~]# cat /etc/os-release
NAME="openEuler"
VERSION="22.03 (LTS-SP3)"
ID="openEuler"
VERSION_ID="22.03"
PRETTY_NAME="openEuler 22.03 (LTS-SP3)"
ANSI_COLOR="0;31"
[root@bogon ~]# ssh -V
OpenSSH_8.8p1, OpenSSL 1.1.1wa 16 Nov 2023
2.把涉及到的配置文件进行备份
[root@bogon ~]# cp -rf /etc/ssh /etc/ssh.bak
[root@bogon ~]# cp -rf /usr/bin/openssl /usr/bin/openssl.bak
[root@bogon ~]# cp -rf /etc/pam.d /etc/pam.d.bak
[root@bogon ~]# cp -rf /usr/lib/systemd/system /usr/lib/systemd/system.bak
3.安装和配置telnet服务【当远程升级出现问题时可访问登录上服务器】
注:与 RHEL系列的发行版本(RHEL/CentOS/RockyLinux/……)不同的是,在openEuler上,Telnet-Server并没有被从Telnet拆分为一个独立的包。所以只需要安装 Telnet 一个rpm包就可以了。
#以下为安装和配置telnet服务。
[root@bogon ~]# yum install -y telnet telnet-server xinetd
[root@bogon ~]# systemctl start xinetd && systemctl start telnet.socket
#以下为配置firewalld防火墙开放telnet端口。
[root@bogon ~]# firewall-cmd --zone=public --add-port=23/tcp --permanent
success
[root@bogon ~]# firewall-cmd --complete-reload
success
[root@bogon ~]# firewall-cmd --query-port=23/tcp
yes
#以下为开放telnet明文登录和测试telnet登录情况。
[root@bogon ~]# sed -i 's/^auth[[:space:]]+required[[:space:]]+pam_securetty.so/#&/' /etc/pam.d/remote
[root@bogon ~]# telnet 127.0.0.1
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
#以下为设置开机telnet服务自启动。
[root@bogon ~]# systemctl enable telnet.socket
Created symlink /etc/systemd/system/sockets.target.wants/telnet.socket → /usr/lib/systemd/system/telnet.socket.
4.安装依赖和编译环境工具等
[root@bogon ~]# yum install -y vim gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel zlib-devel tcp_wrappers-devel tcp_wrappers libedit-devel perl-IPC-Cmd wget tar lrzsz nano
5.从官方下载并解压升级的源码包文件
[root@bogon ~]# cd /usr/local/src/
[root@bogon src]# ll
总用量 0
[root@bogon src]# wget https://www.zlib.net/zlib-1.3.1.tar.gz
[root@bogon src]# wget https://www.openssl.org/source/openssl-3.3.1.tar.gz
[root@bogon src]# wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
[root@bogon src]# ls -lth
总用量 21M
-rw-r--r--. 1 root root 1.9M 7月 1 15:34 openssh-9.8p1.tar.gz
-rw-r--r--. 1 root root 18M 6月 4 22:58 openssl-3.3.1.tar.gz
-rw-r--r--. 1 root root 1.5M 1月 23 03:53 zlib-1.3.1.tar.gz
[root@bogon src]# tar -zxvf zlib-1.3.1.tar.gz
[root@bogon src]# tar -zxvf openssl-3.3.1.tar.gz
[root@bogon src]# tar -zxvf openssh-9.8p1.tar.gz
6.配置编译及安装Zlib
[root@bogon src]# cd zlib-1.3.1
[root@bogon zlib-1.3.1]# pwd
/usr/local/src/zlib-1.3.1
[root@bogon zlib-1.3.1]# ./configure --prefix=/usr/local/src/zlib
[root@bogon zlib-1.3.1]# make -j 4 && make test && make install
7.配置编译及安装OpenSSL
[root@bogon src]# cd openssl-3.3.1
[root@bogon openssl-3.3.1]# pwd
/usr/local/src/openssl-3.3.1
[root@bogon openssl-3.3.1]# ./config --prefix=/usr/local/src/openssl
[root@bogon openssl-3.3.1]# make -j 4 && make instal
#配置openssl
[root@bogon openssl-3.3.1]# mv /usr/bin/openssl /usr/bin/oldopenssl
[root@bogon openssl-3.3.1]# ln -s /usr/local/src/openssl/bin/openssl /usr/bin/openssl
[root@bogon openssl-3.3.1]# ln -s /usr/local/src/openssl/lib64/libssl.so.3 /usr/lib64/libssl.so.3
[root@bogon openssl-3.3.1]# ln -s /usr/local/src/openssl/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3
#更新动态库
[root@bogon openssl-3.3.1]# echo "/usr/local/src/openssl/lib64" >> /etc/ld.so.conf
[root@bogon openssl-3.3.1]# ldconfig
[root@bogon openssl-3.3.1]#
#查看升级后的openssl版本
[root@bogon openssl-3.3.1]# openssl version -v
OpenSSL 3.3.1 4 Jun 2024 (Library: OpenSSL 3.3.1 4 Jun 2024)
8.配置编译及安装OpenSSH
#首先卸载老版本和清理残余文件
[root@bogon src]# yum remove -y openssh
[root@bogon src]# rm -rf /etc/ssh/*
[root@bogon src]# cd openssh-9.8p1
[root@bogon openssh-9.8p1]# pwd
/usr/local/src/openssh-9.8p1
[root@bogon openssh-9.8p1]#
#配置编译及安装openssh
[root@bogon openssh-9.8p1]# ./configure --prefix=/usr/local/src/ssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/src/openssl --with-zlib=/usr/local/src/zlib
[root@bogon openssh-9.8p1]# make -j 4 && make install
#查看升级后ssh版本
[root@bogon openssh-9.8p1]# /usr/local/src/ssh/bin/ssh -V
OpenSSH_9.8p1, OpenSSL 3.3.1 4 Jun 2024
#复制编译安装好的ssh文件
[root@bogon openssh-9.8p1]# cp -rf /usr/local/src/openssh-9.8p1/contrib/redhat/sshd.init /etc/init.d/sshd
[root@bogon openssh-9.8p1]# cp -rf /usr/local/src/openssh-9.8p1/contrib/redhat/sshd.pam /etc/pam.d/sshd
[root@bogon openssh-9.8p1]# cp -rf /usr/local/src/ssh/sbin/sshd /usr/sbin/sshd
[root@bogon openssh-9.8p1]# cp -rf /usr/local/src/ssh/bin/ssh /usr/sbin/ssh
[root@bogon openssh-9.8p1]# cp -rf /usr/local/src/ssh/bin/ssh-keygen /usr/bin/ssh-keygen
[root@bogon openssh-9.8p1]#
#设置允许root用户登录
[root@bogon openssh-9.8p1]# echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
[root@bogon openssh-9.8p1]# echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config
#重启sshd服务
[root@bogon openssh-9.8p1]# /etc/init.d/sshd restart
#查看服务运行状态
[root@bogon openssh-9.8p1]# /etc/init.d/sshd status
#设置sshd开机启动。
[root@bogon openssh-9.8p1]# chkconfig --add sshd
9.通过终端ssh登录测试,成功登录,查看版本和服务显示升级成功。