CentOS 7 升級openssl和openssh


1.升級環境

OS版本:Centos 7.8

openssh和openssl 版本:

[root@localhost media]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017

升級目標:

openssl 1.0.2k --> openssl 1.1.1k

openssh 7.4p1 --> openssh 8.6p1 

 

以下所有操作均在root用戶下完成。

2.安裝telnet 

防止openssh升級出現問題,連不上服務器,建議開啟telnet服務。

 

# 查看是否安裝telnet服務
rpm -qa | grep telnet
rpm -qa | grep xinetd


# 若沒有安裝,使用yum安裝
yum -y install telnet* 
yum -y install xinetd
 
#使服務開機自啟
systemctl enable xinetd.service
systemctl enable telnet.socket
 
#開啟服務
systemctl start telnet.socket  
systemctl start xinetd
 
 vi /etc/securetty
在最后添加兩行
pts/0
pts/1
 
systemctl restart xinetd

# 確認下是否啟動成功
netstat -plnt |grep 23  

 

3.升級OpenSSl
3.1 查看原版本
[root@localhost media]# openssl version -a
 
3.2 解壓安裝

安裝系統包

[root@localhost media]# yum -y install net-tools perl gcc gcc++ make

 

解壓安裝

[root@localhost media]# tar zxvf openssl-1.1.1k-20210525.tar.gz 

 [root@localhost media]# cd openssl-1.1.1k/

[root@localhost openssl-1.1.1k]# ./config --prefix=/usr/local/openssl   #檢查環境

[root@localhost openssl-1.1.1k]# ./config -t
[root@localhost openssl-1.1.1k]# make && make install     #編譯安裝

3.3 檢查更新函數庫
cd /usr/local
ldd /usr/local/openssl/bin/openssl

1 [root@localhost openssl-1.1.1k]# cd /usr/local/
2 [root@localhost local]# ldd /usr/local/openssl/bin/openssl
3 linux-vdso.so.1 => (0x00007ffe03d81000)
4 libssl.so.1.1 => not found
5 libcrypto.so.1.1 => not found
6 libdl.so.2 => /lib64/libdl.so.2 (0x00007faf28080000)
7 libpthread.so.0 => /lib64/libpthread.so.0 (0x00007faf27e64000)
8 libc.so.6 => /lib64/libc.so.6 (0x00007faf27a96000)
9 /lib64/ld-linux-x86-64.so.2 (0x00007faf28284000)

[root@localhost local]# echo "/usr/local/openssl/lib" >> /etc/ld.so.conf    #添加所缺函數庫

[root@localhost local]# ldconfig -v        #更新函數庫
[root@localhost local]# openssl/bin/openssl version      #查看新安裝的版本

 3.4 增加openssl軟連接
[root@localhost local]# which openssl           #查看舊版本openssl命令在哪里
[root@localhost local]# mv /bin/openssl /usr/bin/openssl.old      #將舊版本openssl移除
[root@localhost local]# ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl           #新版本制作軟鏈接
[root@localhost local]# openssl version         最后查看版本,更新完畢

1 [root@localhost local]# openssl version
2 OpenSSL 1.0.2k-fips  26 Jan 2017

3.5 刪除舊版openssl

#檢查系統中舊版openssl軟件

1 [root@localhost local]# rpm -qa |grep openssl  
2 openssl098e-0.9.8e-29.el7.centos.3.x86_64
3 openssl-libs-1.0.2k-19.el7.x86_64
4 openssl-1.0.2k-19.el7.x86_64
5 xmlsec1-openssl-1.2.20-7.el7_4.x86_64

我們需要卸載  openssl-1.0.2k-19.el7.x86_64

[root@localhost local]# rpm -e --nodeps openssl-1.0.2k-19.el7.x86_64

卸載舊版本后,需要重新為新版做軟連接:

[root@localhost local]# ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl 

 

4.升級openssh

4.1 解壓安裝包

[root@localhost media]# tar zxvf openssh-8.6p1-20210419.tar.gz
 
4.2 移除舊版本
[root@localhost media]# mv /etc/ssh /etc/ssh.old
注意:移除之后,不能退出當前會話;若退出,只能通過telnet登錄了。

4.3 安裝系統包

[root@localhost media]# yum -y install zlib-devel pam-devel openssl-devel
 
4.4 編譯安裝

[root@localhost media]# cd openssh-8.6p1/
[root@localhost openssh-8.6p1]#./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl --with-md5-passwords --mandir=/usr/share/man --with-zlib=/usr/local/zlib --without-hardening

config過程中遇到的錯誤:

報錯1:configure: error: *** zlib.h missing

需安裝:

yum -y install zlib-devel
 
 報錯2:configure: error: PAM headers not found 
需安裝:

yum -y install pam-devel

 

報錯3:find openssl head...ERROR

原因是舊版本的openssl在系統里,需要卸載掉,需要卸載openssl。

處理過程:

參考步驟3.5.

 

 

開始編譯安裝:

[root@localhost openssh-8.6p1]# make && make install

 

4.5 修改啟動腳本

# 拷貝啟動腳本
[root@localhost openssh-8.6p1]# cp ./contrib/redhat/sshd.init /etc/init.d/sshd

# 修改啟動腳本
[root@localhost openssh-8.6p1]# vi /etc/init.d/sshd

# 按下圖修改,需要注意,此路徑是你安裝新版本openssh的路徑,根據你的實際情況修改:
SSHD=/usr/local/openssh/sbin/sshd

 

sed -i 's#/usr/sbin/sshd#/usr/local/openssh/sbin/sshd#' /etc/init.d/sshd

 

#配置sshd開機啟動

[root@localhost openssh-8.6p1]# chkconfig --add sshd
[root@localhost openssh-8.6p1]# chkconfig --level 2345 sshd on
[root@localhost openssh-8.6p1]# chkconfig --list

 

4.6 修改sshd配置文件/etc/ssh/sshd_config 
 
[root@localhost openssh-8.6p1]# echo "PermitRootLogin yes" >> /etc/ssh/sshd_config             #直接用root登錄終端

[root@localhost openssh-8.6p1]# echo 'X11Forwarding yes' >> /etc/ssh/sshd_config                 #設置是否允許X11轉發

[root@localhost openssh-8.6p1]# echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config #是否允許密碼驗證

 

4.7 卸載原有ssh
for i in $(rpm -qa |grep openssh);do rpm -e $i --nodeps;done
提示警告:
 
[root@localhost openssh-8.6p1]#  for i in $(rpm -qa |grep openssh);do rpm -e $i --nodeps;done
warning: /etc/ssh/moduli saved as /etc/ssh/moduli.rpmsave
warning: /etc/ssh/sshd_config saved as /etc/ssh/sshd_config.rpmsave
warning: /etc/ssh/ssh_config saved as /etc/ssh/ssh_config.rpmsave

注意:如果卸載舊版本過程中,配置文件沒有自動備份,需要從前面的/etc/ssh.old中把對應的文件cp到原來的位置。同時注意當前ssh端口是否為默認端口。

 

將警告中被修改的文件名字再改回來
[root@localhost openssh-8.6p1]# mv /etc/ssh/sshd_config.rpmsave /etc/ssh/sshd_config

[root@localhost openssh-8.6p1]# mv /etc/ssh/ssh_config.rpmsave /etc/ssh/ssh_config

[root@localhost openssh-8.6p1]# mv /etc/ssh/moduli.rpmsave /etc/ssh/moduli

 

 4.8 替換相關命令,並重啟sshd服務
[root@localhost openssh-8.6p1]# cp -arp /usr/local/openssh/bin/* /usr/bin/    #替換相關命令

[root@localhost openssh-8.6p1]# service sshd restart                                    #重啟sshd服務
 
驗證升級后版本

1 [root@localhost openssh-8.6p1]# ssh -V
2 OpenSSH_8.6p1, OpenSSL 1.1.1k 25 Mar 2021

 

4.9 關閉telnet

#關閉telnet服務

systemctl stop telnet.socket

systemctl stop xinetd


#關閉telnet服務開機自啟

systemctl disable xinetd.service

systemctl disable telnet.socket


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM