升级Openssh 7.4p1至9.3p1

操作系统版本

CentOS Linux release 7.9.2009 (Core)

二进制包准备

  • openssh-9.3p1.tar.gz

升级依赖包准备

  • zlib-1.2.13.tar.gz
  • openssl-3.1.1.tar.gz

升级步骤

解压安装包

tar -zxvf zlib-1.2.13.tar.gz
tar -zxvf openssl-3.1.1.tar.gz
tar -zxvf openssh-9.3p1.tar.gz

升级zlib

cd zlib-1.2.13
#其中--prefix选项是配置安装的路径
./configure --prefix=/usr/local/zlib
#编译并安装
make && make install
echo '/usr/local/zlib/lib' >> /etc/ld.so.conf 
ldconfig -v

如果在执行./configure 过程中遇到如下报错,先检查系统是否安装gcc,若没有先安装gcc
在这里插入图片描述
gcc可以使用yum安装,也可以自行准备rpm包安装,本次使用yum安装

yum install -y gcc

在这里插入图片描述

升级openssl

升级openssl前请不要将旧版本openssl卸载掉,因为yum会依赖低版本的openssl链接库文件,如果将旧版本的openssl卸载掉,yum将不可用

升级前备份

mv /usr/bin/openssl /usr/bin/openssl_old
mv /usr/include/openssl /usr/include/openssl_old

编译安装openssl

cd openssl-3.1.1
./config --prefix=/usr/local/openssl && make && make install (执行过程需要等待一段时间,耐心等待)
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
echo "/usr/local/openssl/lib64" >> /etc/ld.so.conf
ldconfig -v
openssl version

如果执行./config时遇到以下报错,需要先安装IPC/Cmd.pm模块
在这里插入图片描述

unzip IPC-Cmd.zip
cd IPC-Cmd
rpm -Uvh * --nodeps --force

升级openssh

升级前请先挂一个ssh会话窗口不让其断开,避免升级过程中遇到问题ssh进程挂掉将无法再远程连接到虚拟机或服务器

升级前备份

cp -r /etc/ssh /etc/ssh_old
mv /etc/pam.d/sshd  /etc/pam.d/sshd_old

卸载旧版本ssh

for i in $(rpm -qa |grep openssh);do rpm -e $i --nodeps ;done

编译安装新版本ssh

cd openssh-9.3p1
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-md5-passwords --with-pam --with-tcp-wrappers --with-ssl-dir=/usr/local/openssl --with-zlib=/usr/local/zlib --without-hardening
make && make install

执行./configure时,如果遇到以下报错,请先安装pam-devel
在这里插入图片描述

yum install -y yum-devel

还原、更新启动或配置文件

\cp -a /etc/ssh_old/sshd_config /etc/ssh/sshd_config
mv /etc/pam.d/sshd_old /etc/pam.d/sshd
\cp -arf /usr/local/openssh/bin/* /usr/bin/
\cp -arf /usr/local/openssh/sbin/sshd /usr/sbin/sshd
\cp -a contrib/redhat/sshd.init /etc/init.d/sshd
chmod +x /etc/init.d/sshd
chmod 600 /etc/ssh/ssh_host_ed25519_key
chmod 600 /etc/ssh/ssh_host_rsa_key
chmod 600 /etc/ssh/ssh_host_ecdsa_key

启动sshd

systemctl daemon-reload
chkconfig --add sshd && systemctl enable sshd.service
systemctl start sshd

升级后的一些问题

遇到sftp连不上的问题解决办法

  1. 修改/etc/ssh/sshd_config中的Subsystem
#旧值
Subsystem	sftp	/usr/libexec/openssh/sftp-server
#新值
Subsystem	sftp	/usr/local/openssh/libexec/sftp-server
  1. 重启ssh服务
    systemctl restart sshd

遇到ssh登录时,提示重新输入密码后但还是连不上

设置/etc/sysconfig/selinux 中的SELINUX=disabled

猜你喜欢

转载自blog.csdn.net/Ethin_l/article/details/131389793