前言:安装或升级SSH和SSL有一定的危险系数,要保证设备除SSH要有其他连接方式。出现问题时要有救急通道。可以参考我的另一篇文章:

CentOS升级OpenSSH_9.3p2(RPM升级+源码升级)-CSDN博客

当前版本:

系统版本:CentOS Linux release 7.6.1810 (Core)

SSH版本:OpenSSH_7.4p1    升级至   OpenSSH_9.6p1(SHA256)

SSL版本:OpenSSL_1.0.2k-fips    升级至   OpenSSL-1.1.1k

一、安装OpenSSL

1、下载安装包,上传到服务器

https://artfiles.org/openssl.org/source/old/   (openssl-1.1.1k.tar.gz)

2、备份老版本SSL

shell> whereis openssl

shell> mv /usr/bin/openssl /usr/bin/openssl_1.0.2k

shell> mv /usr/lib64/openssl /usr/lib64/openssl_bak

shell> mv /usr/share/man/man1/openssl.1ssl.gz /usr/share/man/man1/openssl.1ssl.gz_bak

shell> mv /usr/include/openssl /usr/include/openssl.bak

注意:不要卸载系统自带的openssl或执行一些rm命令,卸载后会出现各种环境问题,甚至会无法远程登录到设备,包含ssh、telnet协议(非常危险)

3、编译安装SSL

shell> tar -zxvf openssl-1.1.1k.tar.gz -C /usr/src/      解压路径自定义

shell> cd /usr/src/openssl-1.1.1k/

shell> yum install -y zlib-devel.x86_64 openssl-devel.x86_64 pam-devel.x86_64 perl-Test-Simple perl perl-CPAN.noarch gcc

shell> ./config --prefix=/usr/local/openssl && ./config -t

shell> make -j4

shell> make install

3、添加环境变量

shell> vim /etc/profile      文件后追加

# OpenSSL

export PATH=/usr/local/openssl/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/openssl/lib:$LD_LIBRARY_PATH

shell> ln -s /usr/local/openssl/include/openssl /usr/include/       如果已生成,忽略

shell> openssl version

二、安装OpenSSH

1、下载安装包,上传到服务器

https://www.openssh.com/releasenotes.html        (openssh-9.6p1.tar.gz)

https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/

2、卸载老版本SSH

注意:危险操作,一定要安装好telnet。确保有其他方式能够连接到设备(选择性操作)

telnet安装可以参考开头的链接

shell> systemctl stop sshd.service

shell> cp /etc/pam.d/sshd /etc/pam.d/sshd_bak     该文件一定要备份,缺少该文件ssh登不上设备

shell> cp -r /etc/ssh /etc/ssh_7.4p1_bak

shell> rpm -qa | grep openssh

shell> rpm -e $(rpm -qa | grep openssh) --nodeps      卸载7.4p1版本

3、编译安装SSH

shell> tar -zxvf openssh-9.6p1.tar.gz -C /usr/src/      解压路径自定义

shell> cd /usr/src/openssh-9.6p1/

shell> yum install -y zlib-devel.x86_64 openssl-devel.x86_64 pam-devel.x86_64 gcc   如果在安装SSL时已安装依赖包,这里可以忽略

shell> ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl --with-md5-passwords --with-openssl-include=/usr/local/openssl/include

shell> make -j4

shell> make install

看到以下信息暂时忽略

Permissions 0640 for '/etc/ssh/ssh_host_rsa_key' are too open.

Permissions 0640 for '/etc/ssh/ssh_host_ecdsa_key' are too open.

Permissions 0640 for '/etc/ssh/ssh_host_ed25519_key' are too open.

make: [check-config] 错误 1 (忽略)

shell> cp /usr/src/openssh-9.6p1/contrib/redhat/sshd.init /etc/init.d/sshd

shell> vim /etc/ssh/sshd_config

shell> mv /etc/pam.d/sshd_bak /etc/pam.d/sshd         还原备份的pam文件

shell> cd /etc/ssh/

shell> chmod 600 ssh_host_rsa_key ssh_host_ecdsa_key ssh_host_ed25519_key   修改在安装时提示这三个文件权限太开放的问题

shell> /etc/init.d/sshd restart

启动时报错,执行systemctl status sshd.service查看错误信息

找不到 libcrypto.so.1.1 这个文件

shell> ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/

在重新执行:/etc/init.d/sshd restart

shell> systemctl enable sshd.service && /sbin/chkconfig sshd on && chkconfig --add sshd && systemctl restart sshd.service     一定要加入开机自启

shell> ssh -V

精彩链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。

大家都在找:

centos:centos7

linux:嵌入式linux系统总体框架

运维:运维工程师一月多少钱

ssh:手机ssh工具