1.升級前準備
內網的linux系統(tǒng)在安全掃描,如果使用的是老版本的linux 系統(tǒng)肯定會提示升級openssh,現在基本要求升級到openssh7.3p1.
所以在安裝前需要下載openssh7.3p1
在安裝過程可能會提示openssl版本的問題下載最新的openssl-1.0.2h
因為安裝過程中可能會出現各種報錯問題,遇到時候可以根據報錯解決問題。例如gcc版本不對,zlib版本不對這兩個我在安裝過程都沒有遇到。GCC如果連接外網或者內網有yum源 可以直接yum install gcc 安裝。
安裝前可以查看到版本 ssh -V 這個版本是很低的,系統(tǒng)版本是redhat 5.4


可以使用遠程上傳工具將下載好的兩個文件上傳到需要升級的linux服務器上面我使用的xshel里面的xftp上傳的

2.升級過程
解壓文件就不用我說了吧:tar xzvf openssh-7.3p1.tar.gz
tar xzvf openssl-1.0.2h.tar.gz

我在第一次升級的時候沒有先升級openssl出現如下報錯:
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl --with-md5-passwords --mandir=/usr/share/man編譯時候可以不帶-with-md5-passwords


2.1 升級openssl
有人可能會問是否需要卸載openssl,個人建議如果你是業(yè)務機器還是先不要卸載,原因是如果你卸載可能你有業(yè)務也需要使用openssl比如web服務器就有可能會用到,如果你卸載那么就會出現故障,導致整個業(yè)務無法使用,我們可以把新版本的安裝到你指定的一個位置,后面在使用ln連接過去。這樣不會因為卸載導致故障。在之前升級到openssh到7.2時候就卸載openssl結果提示無法卸載我強制卸載最后就業(yè)務無法使用了。
ln相當于什么呢?快捷方式,如果在windows下安裝個程序我們可以在新建快捷方式。那么在linux系統(tǒng)下相同也是可以的。當然這是我的個人理解
cd openssl-1.0.2h ./config --prefix=/usr/local/ssl shared zlib-dynamic enable-camellia

出現如下提示說明編譯成功,需要在運行make depend ,在運行mke&&make install



上面就表示已經安裝完成,但是現在還需要做一些設置就創(chuàng)建快捷方式和連接庫文件
mv /usr/bin/openssl /usr/bin/openssl.bak mv /usr/include/openssl /usr/include/openssl.bak ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl ln -s /usr/local/ssl/include/openssl /usr/include/openssl echo "/usr/local/ssl/lib" >> /etc/ld.so.conf ldconfig -v #檢測庫文件
Openssl version -a檢查版本

2.2 升級openssh
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl --with-md5-passwords --mandir=/usr/share/man

發(fā)現還是有這樣的報錯,原因是上面的的指定--with-ssl-dir=/usr/local/openssl 是錯誤的應該是和上面的安裝openssl設置的相同的,/usr/local/ssl .
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/ssl --with-md5-passwords --mandir=/usr/share/man這樣就成功編譯了。

在安裝之前需要先把之前的配置文件備份下
mv /etc/ssh/ssh_config /etc/ssh/ssh_config.bak mv /etc/ssh/sshd_config /etc/ssh/sshd_config.bak make && make install


現在就可以安裝了,前面一直沒有說的一個問題就是這個是遠程安裝那么安裝以后如果需要修改配置文件,不能再使用ssh修改,可以使用telnet或者其他的替代程序操作

發(fā)現了什么重啟以后沒有成功啊。顯示的還是之前的,我沒有原來的卸載 rpm -e ‘rpm -qa|grep openssh’
修改配置文件和卸載需要使用其他方式登錄上去 我使用的是虛擬化的我直接使用vSphere client遠程連接上去操作。
3.修改配置文件
卸載之后將你新安裝的的文件里面對應ssh和sshd分別復制到/usr/bin/ssh和/usr/sbin/sshd.
然后在根據你的操作系統(tǒng)把解壓文件下面的contrib里面找到你的系統(tǒng)是redhat還是其他 里面的sshd.init文件復制到/etc/init.d/sshd 這樣就可以重新啟動了。
特別說明:我一開始沒有卸載原來的版本 直接這樣操作發(fā)現重啟服務還是原來的版本,這個和openssl有點不一樣。那個可以和舊版本同時存在但是這個不行。就好像我們在windows下安裝某些軟件不同的版本必須卸載到另外的版本。產品能夠去之后發(fā)現遠程使用root無法登錄還是需要修改配置文件。

配置文件主要是:/etc/ssh/sshd_config

上面第一個是說他的端口為22 第二個是說是ssh2 第三個就是開啟遠程root登錄了。

第一個位置是防止有事會在遠程登錄有個錯誤提示需要把這個開啟。
第二個位置是將sftp的文件位置設定好否則sftp無法使用
這些都完成之后重啟服務service sshd restart(注意是重啟 不是start 否是無效的)
4.遠程測試
如果沒有修改配置文件遠程報錯:

修改重啟之后:

特別
今天遇到新的問題就是同事reboot我升級之后的linux系統(tǒng)發(fā)現不能遠程。我到機器上面看sshd沒有啟動。我以為是我沒有設置chkconfig sshd on導致的但是我查看在幾個模式下都是啟動的啊,后來我想可能是這種升級方法有弊端,建議保險起見,雖然我也看到了S55sshd,但是在加兩個軟連接。因為是生產機器我,沒有在進一步測試是不是同事操作的其他問題。

今天在準備測試沒有隨系統(tǒng)啟動問題時候,新安裝的centos 7然后遇到了4個報錯:
1.gcc沒有安裝
2.zlib.h missing原本我以為是zlib沒有安裝但是查詢已經安裝最后發(fā)現是zlib-devel沒有安裝導致的問題
3.openssl headers missing查詢openssl已經安裝版本也沒問題是openssl-devel
4.PAM headers not found同樣因為open-devel問題
再將centos7 升級到openssh7.3sp1使用xshell顯示找不到host key的加密算法
解決辦法是rm /etc/ssh/ssh_host_*
在重啟電腦就可以了,相當于吧之前的秘鑰全部重置