慕远的小站

  • 首页
  • linux命令
  • 常用镜像
  • 掩码计算
  • IOPS计算
  • 关于
2025年 5月
一 二 三 四 五 六 日
 1234
567891011
12131415161718
19202122232425
262728293031  
« 1月    

CentOS7升级OpenSSL和OpenSSH(一起升级)

  • Vincent慕远
  • 2022-08-18
  • 0

整个过程不需要卸载原有的OpenSSL和OpenSSH的rpm包,升级时要通过控制台操作而不是通过SSH本身进行操作(防止升级期间SSH会话断开导致中断)。

升级前准备

登陆CentOS7系统,执行“yum update openssh”,先将OpenSSH升级到YUM仓库支持的最新版本,如果中途提示[y/N],输入y并回车来确认继续。

执行“openssl version”,查看当前的OpenSSL版本并记录,例如下图的版本是OpenSSL 1.0.2:

执行“ssh -V”,查看当前的OpenSSH版本并记录,例如下图的版本是OpenSSH 7.4p1:

可以看到这两个软件的版本都是2017年的,不是最新版本。

安装依赖包

升级过程需要几个组件包,分别执行以下命令(每个yum install开头的是一条命令)来安装:

yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel pcre-devel pam-devel
yum install -y pam* zlib*
yum install -y perl-IPC-Cmd

安装OpenSSL

备份文件

1)、执行命令:ll /usr/bin/openssl

如果有显示(存在)此文件,那么执行如下命令将其重命名进行备份:

mv /usr/bin/openssl /usr/bin/openssl_bak

2)、执行命令:ll /usr/include/openssl/

这是一个目录,如果有显示(存在)此目录,那么执行如下命令将其重命名进行备份:

mv /usr/include/openssl/ /usr/include/openssl_bak

执行升级

创建临时目录,用于上传安装包:

mkdir /tmp/ssh-ssl
cd /tmp/ssh-ssl/

将OpenSSL软件包上传到系统上(本次举例使用的是WinSCP工具上传):

执行以下命令来解压缩(openssl-3.0.5.tar.gz是软件包名,会根据下载的版本而变化):

tar xzvf openssl-3.0.5.tar.gz

进入解压后的软件目录:

cd openssl-3.0.5/

执行如下命令来编译安装新版本的openssl(配置、编译、安装3个命令一起执行,&&符号表示前面的命令执行成功才会执行后面的。):

./config shared --prefix=/usr/local/ssl && make && make install

等待程序自动编译、安装完成(可能需要等待数分钟):

等待执行完毕后,输入如下命令查看一下最后的make install是否有报错,0表示正常:

echo $?

需要创建几个软链接,逐个执行以下命令:

ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl/ /usr/include/openssl
ln -s /usr/local/ssl/lib64/libssl.so.3 /usr/lib64/libssl.so.3
ln -s /usr/local/ssl/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3

逐个执行以下命令,查看这些软链接是否已经创建完成:

ll /usr/bin/openssl
ll /usr/include/openssl
ll /usr/lib64/libssl.so.3
ll /usr/lib64/libcrypto.so.3

依次执行以下命令,加载新配置:

echo "/usr/local/ssl/lib64" >> /etc/ld.so.conf
/sbin/ldconfig

查看一下版本信息,确认没问题:

安装OpenSSH

备份文件

执行以下命令,创建临时目录并将ssh的部分文件备份一下以备后面使用:

mkdir -p /tmp/ssh-ssl/ssh-backup
cp -r /etc/ssh/sshd_config /tmp/ssh-ssl/ssh-backup/
cp /etc/pam.d/sshd /tmp/ssh-ssl/ssh-backup/

执行升级

将OpenSSH软件包上传到系统上:

执行以下命令来解压缩(openssh-9.0p1.tar.gz是软件包名,会随版本而变化):

tar xzvf openssh-9.0p1.tar.gz

执行以下命令删除原版OpenSSH的配置文件和目录:

rm -rf /etc/ssh/*

进入解压后的软件目录:

cd openssh-9.0p1/

执行如下命令来配置、编译、安装,注意命令是完整的一行,以一行输入并一次性执行:

./configure --prefix=/usr/ --sysconfdir=/etc/ssh --with-openssl-includes=/usr/local/ssl/include --with-ssl-dir=/usr/local/ssl --with-zlib --with-md5-passwords --with-pam && make && make install

等待程序自动编译、安装完成(可能需要等待数分钟):

等待执行完毕后,输入如下命令查看一下最后的make install是否有报错,0表示正常:

echo $?

执行此命令编辑修改配置文件:vi /etc/ssh/sshd_config

找到以下内容并按照这样修改(如果配置文件里默认没有这一行,则手动添加;如果对应内容被默认注释了,则需要去掉“#”井号来取消对应行的注释,或者直接另起一行输入对应配置内容。):

PermitRootLogin yes

UseDNS no

HostKey /etc/ssh/ssh_host_rsa_key

HostKey /etc/ssh/ssh_host_ecdsa_key

HostKey /etc/ssh/ssh_host_ed25519_key

PasswordAuthentication yes

UsePAM yes

X11Forwarding yes

执行此命令编辑认证配置文件:vi /etc/pam.d/sshd

检查文件里是否有类似如下内容:

如果发现这个文件是空的,没有内容,则需要手动添加一下,内容是:

#%PAM-1.0<br>auth     required     pam_sepermit.so<br>auth     substack     password-auth<br>auth     include     postlogin<br># Used with polkit to reauthorize users in remote sessions<br>-auth    optional     pam_reauthorize.so prepare<br>account   required     pam_nologin.so<br>account   include     password-auth<br>password   include     password-auth<br># pam_selinux.so close should be the first session rule<br>session   required     pam_selinux.so close<br>session   required     pam_loginuid.so<br># pam_selinux.so open should only be followed by sessions to be executed in the user context<br>session   required     pam_selinux.so open env_params<br>session   required     pam_namespace.so<br>session   optional     pam_keyinit.so force revoke<br>session   include     password-auth<br>session   include     postlogin<br># Used with polkit to reauthorize users in remote sessions<br>-session   optional     pam_reauthorize.so prepare

再次进入到刚才解压后的软件安装文件目录:

cd openssh-9.0p1/

依次执行如下命令复制一些文件到目标位置(如果目标存在就覆盖掉)

cp -a contrib/redhat/sshd.init /etc/init.d/sshd
cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam

执行如下命令来增加运行权限、设置自动启动等:

chmod +x /etc/init.d/sshd
chkconfig --add sshd
systemctl enable sshd

执行如下命令,将原有的systemd管理的sshd文件移走(或者删除),否则影响正常重启sshd服务:

mv /usr/lib/systemd/system/sshd.service /tmp/ssh-ssl/ssh-backup/

执行此命令设置sshd服务开机自动启动:

chkconfig sshd on

执行此命令重启sshd服务:

systemctl restart sshd

没有报错,重启sshd服务正常。

在其它终端通过ssh远程登录,能够正常登录使用;

执行“ssh -V”命令来查看现在的OpenSSH版本,发现已经是升级后的版本了:

至此,已经成功完成了升级。

© 2025 慕远的小站
Theme by Wing
辽ICP备2022002452号-1
  • {{ item.name }}
  • {{ item.name }}