由於項目構建時間比較長,近期安全檢查發現openssh有漏洞。所以要升級openssh到7.9p1版本。由於ssh用於遠程連接,所以要謹慎操作。
建議生成環境要先做測試,之后再在生產環境升級。
1 前期准備
1.1 依賴安裝
1、 OpenSSL版本:目前OpenSSH7.9不支持OpenSSH1.1.x以上。否則編譯的時候會報錯。
2、 Zlib1.1.4或1.2.1.2或更高版本
3、 gcc:因為編譯需要gcc
4、 openssl-devel:編譯時需要
1.2 注意事項
1、 前期多打開一個xshell窗口。保證連接正常。因為可能出現升級失敗。結束后要確定好再關閉。
2、 備份sshd_config配置文件(方便后期使用或者方便升級失敗使用)
3、 最好關閉防火牆,如不關閉防火牆請開啟ssh需要的端口和telnet需要的端口。如果ssh不是22端口最好打開22端口。因為ssh配置文件默認22端口。所以建議關閉防火牆。
2、升級之后要重建xshell的session不然會出項下面提示

1 安裝telnet
1.1 安裝telnet
為防止openssh升級失敗。所以安裝telnet。保證openssh升級失敗也可以通過telnet連接服務器,進行恢復操作。並不用去機房。
#yum install -y telnet-server
#yum install -y xinetd
#systemctl start telnet.socket
#systemctl start xinetd
默認情況下,系統是不允許root用戶telnet遠程登錄的。如果要使用root用戶直接登錄,需設置如下內容。或者可以添加一個可以登錄的用戶,登錄並su到root用戶。
#echo 'pts/0' >>/etc/securetty #echo 'pts/1' >>/etc/securetty #systemctl restart telnet.socket
1.2 驗證telnet
確保使用windows或者其他Linux服務器可以telnet到此機器上。並且可以使用root用戶。

建議開啟telnet和xinetd開機自動啟動,避免reboot后連不上Telnet
systemctl enable xinetd.service
systemctl enable telnet.socket
1 安裝openssh
1.1 下載openssh
Openssh官網地址:https://www.openssh.com/
http下載地址:https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/
選擇openssh-7.9p1.tar.gz進行下載。並上傳到服務器上。
1.2 卸載舊的ssh
#cp -r /etc/ssh /etc/ssh.old #備份一些之前的文件
#rpm -qa|grep openssh
#rpm -e --nodeps openssh-clients-6.6.1p1-31.el7.x86_64
#rpm -e --nodeps openssh-6.6.1p1-31.el7.x86_64
#rpm -e --nodeps openssh-server-6.6.1p1-31.el7.x86_64
#rpm -qa|grep openssh
如果之前就是源碼安裝的,找到之前的安裝包,在里面執行
#make uninstall
1.3 安裝OpenSSH
1、連接到其他計算機時,OpenSSH作為兩個進程運行。第一個進程是特權進程,並根據需要控制權限的頒發。第二個進程與網絡通信。設置適當的環境需要額外的安裝步驟,這些步驟通過以root用戶身份發出以下命令來執行 :
#install -v -m700 -d /var/lib/sshd #chown -v root:sys /var/lib/sshd #groupadd -g 50 sshd #useradd -c 'sshd PrivSep' -d /var/lib/sshd -g sshd -s /bin/false -u 50 sshd
2、解壓安裝
#tar -zxvf openssh-7.9p1.tar.gz
#cd openssh-7.9p1
#./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-privsep-path=/var/lib/sshd
#make
如果報錯
① configure: error: no acceptable C compiler found in $PATH
問題解決
yum install gcc
② configure: error: * zlib.h missing - please install first or check config.log *
問題解決
yum install openssl openssl-devel -y 安裝相關依賴包
3、修改相應文件權限
#chmod 600 /etc/ssh/ssh_host_rsa_key
#chmod 600 /etc/ssh/ssh_host_ecdsa_key
#chmod 600 /etc/ssh/ssh_host_ed25519_key
4、安裝
#make install
5、配置
#install -v -m755 contrib/ssh-copy-id /usr/bin
#install -v -m644 contrib/ssh-copy-id.1 /usr/share/man/man1
#install -v -m755 -d /usr/share/doc/openssh-7.9p1
#install -v -m644 INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-7.9p1
命令解釋:
--sysconfdir=/etc/ssh:這可以防止安裝配置文件 /usr/etc。
--with-md5-passwords:這使得可以使用MD5密碼。
--with-pam:此參數在構建中啟用 Linux-PAM支持。
--with-xauth=/usr/bin/xauth:為X身份驗證設置xauth二進制文件的默認位置。如果將xauth安裝到其他路徑,請更改位置。這也可以sshd_config使用XAuthLocation關鍵字進行控制。如果已安裝Xorg,則可以省略此開關。
--with-kerberos5=/usr:此選項用於在構建中包含Kerberos 5支持。
--with-libedit:此選項為sftp啟用行編輯和歷史記錄功能。
6、根據自身需求改寫配置文件。因為配置文件為初始配置文件。所以和之前的不一樣。可以使用備份配置文件覆蓋。
注意:默認是22端口,但是不能root直接登錄。如果想直接使用root登錄執行以下命令
#echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
2 開機自啟動
ssh服務必須開機自啟動,不然重啟的時候爆炸。
#cp -p contrib/redhat/sshd.init /etc/init.d/sshd
#chmod +x /etc/init.d/sshd
#chkconfig --add sshd
#chkconfig sshd on
#chkconfig --list sshd
#systemctl restart sshd
3 驗證操作
# ssh -V
OpenSSH_7.9p1, OpenSSL 1.0.2k-fips 26 Jan 2017
使用其他電腦或者其他的xshell等工具連接,驗證要謹慎。
4 回滾操作
如果之前是rpm包安裝的。並且按照以上步驟操作,可以直接以下命令進行回滾
# yum -y install openssh-clients
# yum -y install openssh-server
# yum -y install openssh
5 結束操作
之前的步驟一定要謹慎查看。查看是否可以連接,會不會出現什么問題。
1、 恢復telnet的禁止root登錄特權。如果之前關閉就關閉telnet。
2、 開啟防火牆。並驗證連接。
3、最后再關閉之前開xshell界面。
6 參考文檔
官方文檔:
http://www.linuxfromscratch.org/blfs/view/svn/postlfs/openssh.html
作者:橡皮24
鏈接:https://www.jianshu.com/p/220f7fd908b0
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。