redhat 7.4從openssh7.6離線升級openssh8.4p1解決方法

一線碼農波哥發表於2020-11-05

具體需求

       這幾天生產環境伺服器又進行了安全掃描,每次都會報一下漏洞錯誤。雖然只有一個高危問題,但是每次看到ssh遠端漏洞都很燒腦 “主要是裡面坑太多了”,閒話就不說了,今天我們來看看從redhat7.4 的openssh7.4、7.6、8.1離線網的環境中升級到openssh8.4p1吧!!

 漏洞以及環境問題

 OpenSSH 命令注入漏洞(CVE-2020-15778) 報的遠端漏洞問題,因為Linux伺服器都在公司內部,不能連線公網。

 需要注意

為了防止升級失敗,可以在升級之前安裝telnet服務,通過Telnet連線伺服器進行升級。如果大家覺得麻煩或者冒險一下安裝telnet這步驟可以省略。

1、安裝telnet,防止ssh升級失敗導致連結失敗
rpm -ivh telnet-server-0.17-64.el7.x86_64.rpm
rpm -ivh telnet-0.17-64.el7.x86_64.rpm

下載地址:telnet-server-0.17-64.el7.x86_64、telnet-0.17-64.el7.x86_64、xinetd-2.3.15-14.el7.x86_64
2、在防火牆上開放telnet埠
firewall-cmd --zone=public --add-port=23/tcp --permanent
----載入配置生效
firewall-cmd --reload
—加入自啟動
chkconfig telnet on
systemctl enable telnet.socket
systemctl start telnet.socket
----預設不允許root連線,所以新增了賬號
useradd atest
passwd atest

下載依賴openssl、zlib、openssh

下載安裝檔案:openssh8.4需要的 openssl-1.1.1g, openssh-8.4p1,zlib-1.2.11

解壓升級包

 


tar -zxvf Zlib-1.2.11.tar.gz
tar -zxvf openssh-8.4p1.tar.gz
tar -zxvf Openssl-1.1.1g.tar.gz

 

編譯安裝zlib

 

cd zlib-1.2.11
./configure --prefix=/usr/local/zlib
make && make install

 

編譯安裝openssl

cd openssl-1.1.1g
./config --prefix=/usr/local/ssl -d shared
make && make install
echo '/usr/local/ssl/lib' >> /etc/ld.so.conf
ldconfig -v

 

 

安裝openssh

 

1  cd openssh-8.4p1
2 ./configure --prefix=/usr/local/openssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/ssl
3 make && make install
 sshd_config檔案修改
5 echo 'PermitRootLogin yes' >>/usr/local/openssh/etc/sshd_config
6 echo 'PubkeyAuthentication yes' >>/usr/local/openssh/etc/sshd_config
7 echo 'PasswordAuthentication yes' >>/usr/local/openssh/etc/sshd_config

 

備份原有檔案,並將新的配置複製到指定目錄

 

 1 mv /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
 2 cp /usr/local/openssh/etc/sshd_config /etc/ssh/sshd_config
 3 mv /usr/sbin/sshd /usr/sbin/sshd.bak
 4 cp /usr/local/openssh/sbin/sshd /usr/sbin/sshd
 5 mv /usr/bin/ssh /usr/bin/ssh.bak
 6 cp /usr/local/openssh/bin/ssh /usr/bin/ssh
 7 mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.bak
 8 cp /usr/local/openssh/bin/ssh-keygen /usr/bin/ssh-keygen
 9 mv /etc/ssh/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub.bak
10 cp /usr/local/openssh/etc/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ecdsa_key.pub

 啟動sshd

systemctl restart sshd.service
[root@localhost ~]# ssh -V OpenSSH_8.4p1, OpenSSL 1.1.1g 21 Apr 2020

 報錯問題以及解決方案

  如果sshd伺服器無法啟動,可以試試以下方法:

  先停掉sshd服務,將systemctl原伺服器刪除,使用安裝包裡自帶的sshd.init,複製到/etc/init.d/sshd,重啟即可

 

systemctl stop sshd.service
rm -rf /lib/systemd/system/sshd.service 
systemctl daemon-reload
cp /opt/openssh8.4/openssh-8.4p1/contrib/redhat/sshd.init /etc/init.d/sshd
/etc/init.d/sshd restart
systemctl status sshd
systemctl daemon-reload

 

 以上檔案存放路徑我放到根目錄 /opt/下面了,可以按你自己解壓檔案路徑即可。

新增開機啟動

chkconfig --add sshd

chkconfig --list sshd

 

最後上一張圖檢視ssh啟動狀態

systemctl status sshd

 

這一步ssh伺服器已安裝完成。

如果遇到xshell 和SecureCRT 提示:

Key exchange failed.
No compatible key exchange method. The server supports these methods: curve25519

請大家把 Xshell 和CRT 升級到更高版本吧! 

到此,完成了openssh 7.6升級到 8.4版本已完成,希望對大家有所幫助。

 

相關文章