CentOS7 OpenSSL升級1.1.1w;OpenSSH 升級 9.5p1 保姆級教程
修訂信息
#2023/10/27 初始版本
#2024/11/28 對網友反饋的問題進行了說明,同時對openssl-3.4.0 安裝進行了測試
一、 前言
OpenSSH 的加密功能需要用到OpenSSL,所以在升級OpenSSH的時候,大部分情況是需要將OpenSSL一起升級的。
這里我們選擇先升級OpenSSL到OpenSSL 1.1.1w 11 Sep 2023
然后再升級OpenSSH 到OpenSSH_9.5p1, OpenSSL 1.1.1w 11 Sep 2023
#升級OpenSSL 3.X.X 的過程和這個一樣,沒有任何區別
1.1 注意點
升級之前先將需要的包上傳到服務器,以免升級失敗后導致上傳文件失敗。(這里我用的sftp上傳,sftp的核心也需要用到SSH),并安裝telnet-server服務保證SSH升級失敗后,可以繼續遠程連接。
需要有初始yum源,要不然安裝這兩個服務眾多的依賴包將會是夢魘。
原始版本信息如下。

二、升級OpenSSL
2.1 安裝依賴
yum -y install gcc*
yum -y install perl-IPC-Cmd perl-Data-Dumper
# openssl-3.4.0才需要需perl-IPC-Cmd perl-Data-Dumper
2.2備份、卸載原有OpenSSL
1、 查找openssl 相關目錄,然后備份
[root@vm206 etc]# whereis openssl
openssl: /usr/bin/openssl /usr/lib64/openssl /usr/share/man/man1/openssl.1ssl.gz
mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/lib64/openssl /usr/lib64/openssl.old
mv /usr/include/openssl /usr/include/openssl.old
#/usr/include/openssl 這個文件夾一開始沒有的話,后續大概率會報錯,繼續往下操作,后續報錯的時候會告知如何解決
2、 卸載 openssl
yum -y remove openssl
2.3安裝openssl
tar -xzvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w/
./config --prefix=/usr
make && make install
#這里我的目錄選擇了/usr 是因為系統最初始的openssl的目錄就是/usr 這樣可以省去的軟連接、更新鏈接庫的問題
2.4驗證![]()
[root@vm206 openssl-1.1.1w]# whereis openssl
openssl: /usr/bin/openssl /usr/lib64/openssl /usr/include/openssl /usr/share/man/man1/openssl.1ssl.gz /usr/share/man/man1/openssl.1
[root@vm206 openssl-1.1.1w]# openssl version
OpenSSL 1.1.1w 11 Sep 2023
#可以看到我這邊的目錄和老版本的openssl的目錄保持了一致,唯一不同的是多了一個/usr/include/openssl 庫目錄
#如果不加prefix ,openssl的默認路徑如下
Bin: /usr/local/bin/openssl
include庫 :/usr/local/include/openssl
lib庫:/usr/local/lib64/
engine庫:/usr/lib64/openssl/engines
三、 升級OpenSSH
3.1 安裝telnet-server
yum install telnet* -y
systemctl start telnet.socket
systemctl enable telnet.socket
mv /etc/securetty /etc/securetty.bak
setenforce 0
#臨時關閉安全登錄,否則無法進行遠程telnet連接
#有防火墻記得關閉防火墻,并關閉SELinux

#如上,已經可以通過telnet遠程連接了,這下可以放心大膽的操作了。
3.2 安裝依賴包
yum install -y gcc pam-devel rpm-build wget zlib-devel openssl-devel net-tools
3.3 備份

#通過whereis ssh sshd找出bin文件、源文件,然后備份。 man手冊不需要備份。
mv /etc/ssh /etc/ssh.bak
mv /usr/bin/ssh /usr/bin/ssh.bak
mv /usr/sbin/sshd /usr/sbin/sshd.bak
mv /etc/pam.d/sshd /etc/pam.d/sshd.old
#備份pam驗證文件
3.4卸載舊版OpenSSH
yum -y remove openssh
3.5安裝新版OpenSSH
tar -xzvf openssh-9.5p1.tar.gz
cd openssh-9.5p1
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/lib64/
#--with-ssl-dir=/usr/lib64/ 這個是openssl的庫文件目錄
#其中--prefix --sysconfdir 這兩個參數我仍然采用了系統之前的默認路徑,避免路徑混亂導致的問題
如果出現如下報錯:
用whereis openssl 會發現多出了/usr/include/openssl
重新回到openssl目錄make install ,然后再回到openssh目錄重新config即可

mv /usr/include/openssl /usr/include/openssl.old
cd openssl-1.1.1w/
make install
#重新make install openssl
#然后再回到openssh文件夾執行config操作
mv /etc/pam.d/sshd.old /etc/pam.d/sshd
#恢復ssh pam認證
cd openssh-9.5p1/
cp contrib/redhat/sshd.init /etc/init.d/sshd
chkconfig --add sshd
systemctl enable sshd
systemctl start sshd

#可以看到,已經升級成功
3.6修改/etc/ssh/sshd_config 配置文件
增加33行,修改48、83行,然后systemctl restart sshd 重啟sshd服務即可



#登錄成功界面

mv /etc/securetty.bak /etc/securetty
#記得恢復安全登錄


浙公網安備 33010602011771號