前言
公司关基检查,发现openssh版本太低,需要升级到10.0以上才行!但是网上有很多文档写得不尽人意,我在这里记录了自己升级过程,希望能对大家有所帮助。
需要同时升级openssl与openssh,将两个tar包放到同一个文件夹。
这两个安装包已经打包好了,在公众号【javaUp】回复【ssh】即可领取
注意:以下升级过程不能中断,不然通过ssh就进不去了。
有问题可以通过公众号【javaUp】回复【ssh】联系我
一、升级步骤
1.准备工作
检查tel***是否安装
rpm -qa | grep tel***
如果没有,则执行下面命令
yum install tel***
启动tel***服务
systemctl start tel***.socket
检查tel***服务
systemctl status tel***.socket
检查防火墙是否启用,未启用不用管,如果启用放行23端口
systemctl status firewalld
升级前先检查perl是否安装
perl -v
如果没有,则执行下面语句安装perl
yum install perl
yum install g***
yum install zlib-devel
yum groupinstall "Development Tools"
检查是否安装perl-IPC-Cmd
rpm -q perl-IPC-Cmd
如果没有安装,则执行下面语句安装:
yum install -y perl-IPC-Cmd
一次性安装所有perl依赖
yum install -y perl perl-IPC-Cmd perl-Data-Dumper perl-Text-Template
2.升级openssl
#解压gz包
tar -zxvf openssl-3.4.1.tar.gz
#进入到文件夹
cd openssl-3.4.1/
#依次执行以下命令,时间较长,耐心等待,不要离开视线
##./config shared zlib -fPIC --prefix=/usr/local/openssl3
./config --prefix=/usr/local/openssl3 \
--openssldir=/usr/local/openssl3 \
shared \
zlib
make -j 4
make install
备份后做软连接,如出现错误提示不用管
- 将库路径加入系统配置
echo '/usr/local/openssl3/lib64' > /etc/ld.so.conf.d/openssl3.conf
ldconfig -v
# 备份旧版本(可选)
sudo mv /usr/bin/openssl /usr/bin/openssl.bak
# 创建新链接
sudo ln -sf /usr/local/openssl3/bin/openssl /usr/bin/openssl
sudo ln -sf /usr/local/openssl3/lib64/libssl.so.3 /usr/lib64/libssl.so.3
sudo ln -sf /usr/local/openssl3/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3
查看openssl版本,如下图说明openssl已经升级完成!
openssl version
3.升级openssh
3.1 卸载旧的openssh
systemctl stop sshd
mv /etc/ssh /etc/ssh.bak
mv /usr/sbin/sshd /usr/sbin/sshd.bak
mv /usr/bin/ssh /usr/bin/ssh.bak
mv /usr/local/sbin/sshd /usr/local/sbin/sshd.bak
#找到ssh安装位置
which ssh
#备份上述安装位置
mv /usr/local/bin/ssh /usr/local/bin/ssh.bak
查看卸载情况
rpm -qa | grep openssh
如果有内容,执行以下命令
yum remove openssh
#再次检查卸载情况
rpm -qa | grep openssh
3.2 正式安装openssh
#解压openssh
tar -zxvf openssh-10.0p1.tar.gz
#进入到openssh文件夹
cd openssh-10.0p1/
#依次执行以下命令,时间较长,耐心等待,不要离开视线
./configure --prefix=/usr/local/openssh --with-ssl-dir=/usr/local/openssl3 --with-zlib
make -j 4
make install
取消原有sshd启动方式并配置新版sshd.service,如出现错误提示不用管
ls /usr/lib/systemd/system/ssh *
rm -f /usr/lib/systemd/system/ssh *
cp contrib/redhat/sshd.init /etc/init.d/sshd
复制sshd相关文件到新目录
mkdir /etc/ssh
修改sshd_config配置文件,一定修改红框的,不改进不去
vim /usr/local/openssh/etc/sshd_config
PermitRootLogin yes
PubkeyAuthentication yes
依次执行以下命令复制文件,如果提示“是否覆盖”,则输入y同意覆盖
cp /usr/local/openssh/etc/sshd_config /etc/ssh/sshd_config
cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
cp /usr/local/openssh/bin/ssh /usr/bin/ssh
cp /usr/local/openssh/sbin/sshd /usr/local/sbin/sshd
cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
cp /usr/local/openssh/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub
启动sshd服务并设置开机启动
systemctl daemon-reload
systemctl start sshd && systemctl enable sshd
/usr/lib/systemd/systemd-sysv-install enable sshd
查看openssh版本号
ssh -V
或者
sshd -V
sshd -V可能还是原来的版本,不用管,用下面的方式验证:
3.3 验证
先别关闭这个窗口,换个窗口看能否登录,能登录则升级完成
再用以下命令查看版本
ssh -V
或者
sshd -V
4. 移除tel***并禁用
sudo yum remove tel*** tel***-server '*tel****' -y 2>/dev/null
[参考资料]:
麒麟v10 国产化系统升级openssh_麒麟v10升级openssh-CSDN博客
升级openssl和openssh的一种方法_kylinv10 升级openssl-CSDN博客
Kylin Server 系统离线升级 openssh_离线升级openssh-CSDN博客