版本说明
当前内核版本如下
当前操作系统版本如下
当前OpenSSH版本和OpenSSL版本如下
升级说明
openssh依赖于openssl和zlib,而openssl依赖于zlib,所以我们要先安装zlib,然后是openssl,最后是openssh。
zlib-1.3.1下载地址:https://www.zlib.net/zlib-1.3.1.tar.gz
openssl-3.2.1下载地址:https://www.openssl.org/source/openssl-3.2.1.tar.gz
openssh-9.7p1下载地址:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.7p1.tar.gz
升级步骤
备份配置
cp -rf /etc/ssh /etc/ssh.20240614bak
cp -rf /usr/bin/openssl /usr/bin/openssl.20240614bak
cp -rf /etc/pam.d /etc/pam.d.20240614bak
cp -rf /usr/lib/systemd/system /usr/lib/systemd/system.20240614bak
安装telnet
此步主要是防止openssh升级过程中出现异常,导致ssh无法使用,无法远程登陆服务器,此时可以用telnet暂时登陆服务器使用
检查一下之前有没有安装过
rpm -qa telnet-server
rpm -qa | grep xinetd
然后进行安装
yum -y install telnet-server telnet xinetd
启动服务
systemctl start telnet.socket
systemctl start xinetd
加入开机自启动
systemctl enable xinetd.service
systemctl enable telnet.socket
开放防火墙23端口
firewall-cmd --zone=public --add-port=23/tcp --permanent
重新加载防火墙规则
firewall-cmd --complete-reload
查询23端口放行情况
firewall-cmd --query-port=23/tcp
开放telnet明文登录
sed -i 's/^auth[[:space:]]\+required[[:space:]]\+pam_securetty.so/#&/' /etc/pam.d/remote
telnet登陆测试
安装依赖及编译环境
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
下载源码包
先进入到/usr/local/src目录下,把需要源码包都下载下来
cd /usr/local/src
wget https://www.zlib.net/zlib-1.3.1.tar.gz
wget https://www.openssl.org/source/openssl-3.2.1.tar.gz
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.7p1.tar.gz
查看源码包都在该目录下
然后解压
tar -zxvf zlib-1.3.1.tar.gz
tar -zxvf openssl-3.2.1.tar.gz
tar -zxvf openssh-9.7p1.tar.gz
查看源码包都已经解压好
安装zlib
进入目录 cd /usr/local/src/zlib-1.3.1
配置 ./configure --prefix=/usr/local/src/zlib
编译安装(时间根据机器性能而定) make -j 4 && make install
安装openssl
进入目录 cd /usr/local/src/openssl-3.2.1
配置 ./config --prefix=/usr/local/src/openssl
编译安装(时间根据机器性能而定) make -j 4 && make install
配置
mv /usr/bin/openssl /usr/bin/oldopenssl
ln -s /usr/local/src/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/src/openssl/lib64/libssl.so.3 /usr/lib64/libssl.so.3
ln -s /usr/local/src/openssl/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3
更新动态库
echo "/usr/local/src/openssl/lib64" >> /etc/ld.so.conf
ldconfig
查看更新后的版本
openssl version -v
安装openssh
卸载旧版本openssh yum remove -y openssh
清理残余文件 rm -rf /etc/ssh/*
进入openssh-9.7p1目录
cd /usr/local/src/openssh-9.7p1
配置
./configure --prefix=/usr/local/src/ssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/src/openssl --with-zlib=/usr/local/src/zlib
编译安装
make -j 4 && make install
查看目录版本
/usr/local/src/ssh/bin/ssh -V
复制新ssh文件
cp -rf /usr/local/src/openssh-9.7p1/contrib/redhat/sshd.init /etc/init.d/sshd
cp -rf /usr/local/src/openssh-9.7p1/contrib/redhat/sshd.pam /etc/pam.d/sshdcp -rf /usr/local/src/ssh/sbin/sshd /usr/sbin/sshd
cp -rf /usr/local/src/ssh/bin/ssh /usr/bin/ssh
cp -rf /usr/local/src/ssh/bin/ssh-keygen /usr/bin/ssh-keygen
允许root登录
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config
重启sshd服务
/etc/init.d/sshd restart
查看服务运行状态
/etc/init.d/sshd status
添加开机启动
chkconfig --add sshd
查看升级后ssh版本
ssh -V
这时我们查看,openssh已经成功升级到9.7p1版本,接下来我们用ssh进行一下登陆测试,没有问题
卸载telnet
由于Telnet协议使用明文传输数据,用户的传输数据的安全性得不到保障,建议将telnet卸载
停止telnet.socket服务 systemctl stop telnet.socket
停止telnet.socket开机自启 systemctl disable telnet.socket
查看当前telnet.socket服务状态 systemctl status telnet.socket
同样对xinetd服务也做上面的操作
删除包 yum -y remove telnet-server telnet xinetd
查看防火墙23端口是否开放 firewall-cmd --query-port=23/tcp
关闭防火墙23端口 firewall-cmd --zone=public --remove-port=23/tcp --permanent
重新加载防火墙规则 firewall-cmd --complete-reload
再次查看防火墙23端口是否开放 firewall-cmd --query-port=23/tcp
关闭telnet明文登录 vim /etc/pam.d/remote
原来的文件
修改为(把第二行的注释去掉即可)
升级结束
至此,OpenSSH_9.7p1升级结束。文章可能还有一些不足之处请谅解。有问题大家可以留下评论,大家共同探讨,共同进步!