redhat 7.4從openssh7.6離(li)線升級(ji)openssh8.4p1解(jie)決(jue)方法(fa)
具體需求
這幾天生產環境服務器又進行了安全掃描,每次都(dou)會報一(yi)下漏(lou)洞(dong)錯誤(wu)。雖(sui)然只(zhi)有(you)一(yi)個(ge)高危(wei)問題(ti),但是每(mei)次看(kan)到(dao)(dao)ssh遠程(cheng)漏(lou)洞(dong)都(dou)很燒(shao)腦 “主要(yao)是里面坑太多了”,閑(xian)話就不說了,今天(tian)我們來看(kan)看(kan)從(cong)redhat7.4 的openssh7.4、7.6、8.1離線網的環境(jing)中(zhong)升(sheng)級到(dao)(dao)openssh8.4p1吧!!
漏洞以及環境問題
OpenSSH 命令注(zhu)入(ru)漏洞(dong)(CVE-2020-15778) 報的遠程(cheng)漏洞(dong)問題(ti),因為Linux服務器都在(zai)公司(si)內部,不(bu)能連接公網。
需(xu)要注意
為了防(fang)止升(sheng)級(ji)失敗,可以在升(sheng)級(ji)之(zhi)前安裝(zhuang)telnet服務(wu),通過Telnet連接服務(wu)器(qi)進行(xing)升(sheng)級(ji)。如果大家覺(jue)得麻(ma)煩(fan)或者冒險一下安裝(zhuang)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
下載地址:
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
下載安裝文件:
解壓升級(ji)包
tar -zxvf Zlib-1.2.11.tar.gz
tar -zxvf openssh-8.4p1.tar.gz
tar -zxvf Openssl-1.1.1g.tar.gz
編譯(yi)安裝(zhuang)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文(wen)件修改 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
備份原(yuan)有文件,并將新的配(pei)置復制到指定目錄
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
報錯問(wen)題以及(ji)解決(jue)方(fang)案
如果sshd服務器無法啟動,可以試(shi)試(shi)以下方法:
先停掉sshd服務,將systemctl原服務器(qi)刪除,使用安(an)裝包里自帶的sshd.init,復制到/etc/init.d/sshd,重啟即可(ke)
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
以(yi)上(shang)文件存(cun)放(fang)路徑(jing)我放(fang)到根目錄 /opt/下(xia)面(mian)了,可以(yi)按你自(zi)己解壓文件路徑(jing)即可。
添加開機啟動
chkconfig --add sshd
chkconfig --list sshd
最后上一張圖查看ssh啟(qi)動狀態
systemctl status sshd

這一步ssh服務器已安裝完(wan)成。
如(ru)果(guo)遇到xshell 和SecureCRT 提示:
Key exchange failed.
No compatible key exchange method. The server supports these methods: curve25519
請大(da)家把 Xshell 和CRT 升級到更(geng)高(gao)版本吧!
到(dao)此,完成(cheng)了openssh 7.6升級到(dao) 8.4版本(ben)已(yi)完成(cheng),希望對(dui)大家有所幫助。