Centos6.5 離線 Openssh 升級

自由早晚亂餘生發表於2020-09-16

OpenSSH 升級

升級機器資訊收集

OpenSSH/openssl 版本 OpenSSH_6.9p1, OpenSSL 1.0.2j-fips  26 Sep 2016
系統:CentOS release 6.5 (Final)
核心版本:2.6.32-431.el6.x86_64

離線操作說明: 本文是離線操作的,其中依賴的所有的包,都是下載到本地,然後scp 或者其它方式上傳到我們的沒有外網的機器上的。

主要流程為:

  1. 基於 Dropbear 設定備用 ssh 伺服器
  2. 備份 SSH 配置
  3. 編譯安裝 Openssl (按需)
  4. 升級Openssh
  5. 驗證

風險點:

  1. 可能由於 Openssh 更新失敗,導致 sshd 服務異常,影響正常登陸。
  2. 也可能存在上述內容升級過程中因依賴問題導致失敗。

一、基於 Dropbear 設定備用 ssh 伺服器

Dropbear 是一個相對輕量級的SSH伺服器和客戶端。它是與 OpenSSH 〜/ .ssh / authorized_keys公鑰認證相容的。 我們通過Dropbear 搭建一個新的SSH 伺服器。 主要是為了避免在 升級 OpenSSH 的時候,ssh 連線異常,登陸不上伺服器。

https://matt.ucc.asn.au/dropbear/dropbear.html

  1. 配置一個新的SSH 服務 dropbear

    wget  https://matt.ucc.asn.au/dropbear/dropbear-2020.80.tar.bz2
    tar -xjf dropbear-2020.80.tar.bz2
    cd dropbear-2020.80
    ./configure &&  make && make scp  && make install
    mkdir /etc/dropbear
    /usr/local/bin/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
    /usr/local/bin/dropbearkey -t rsa -s 4096 -f /etc/dropbear/dropbear_rsa_host_key
    /usr/local/sbin/dropbear -p 25022  # 這個加下到開機啟動中。 後面再除去。
    
  2. 測試 dropbear 服務是否可以正常提供SSH 服務

    1. 關閉 sshd,然後通過 dropbear 提供的埠進行登入。 仍然用原來的使用者和密碼。

二、 Openssh 更新

升級版本為: Openssh7.4 與 阿里雲(ECS Centos7.7)版本一致。 OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017

2.1 ssh配置 備份

cp -raf /etc/ssh /etc/ssh.bak2020 
cp -raf /etc/init.d/sshd /etc/init.d/sshd.bak2020 
cp -raf /root/.ssh/ /root/.ssh.bak2020
cp -raf /home/yeemiao/.ssh/ /home/yeemiao/.ssh.bak2020

2.2 openssh 升級

yum   remove  openssh  # 解除安裝 openssh
wget https://openbsd.mirror.netelligent.ca/pub/OpenBSD/OpenSSH/portable/openssh-7.4p1.tar.gz  
tar -xzvf openssh-7.4p1.tar.gz
cd openssh-7.4p1
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-md5-passwords --with-ssl-dir=/usr/local/openssl102j/  #  注意 --with-ssl-dir  值為 openssl 安裝的目錄。
make && make install &&  
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.4p1    && 
install -v -m644    INSTALL LICENCE OVERVIEW README* /usr/share/doc/openssh-7.4p1

mv /etc/init.d/sshd   /etc/init.d/sshd.bak2020_2 
cp -raf /etc/init.d/sshd.bak2020 /etc/init.d/sshd
mv /etc/ssh/sshd_config  /etc/ssh/sshd_config.bak2020_2 
cp -raf /etc/ssh.bak2020/sshd_config   /etc/ssh/sshd_config  
  
service sshd restart  
chkconfig sshd on  

Openssl 升級(由於Openssh編譯失敗)

異常資訊:

error: *** Can't find recent OpenSSL libcrypto (see confiig.log)

解決辦法: 重新編譯個 openssl

在測試環境這個問題沒有出現,可能由於正式環境原來編輯的 openssl 不完整,重新編譯下就行了。

重新編譯可以保留原來的 openssl, 然後使用一個新的目錄即可。

openssl 備份

cp -raf /usr/bin/openssl /usr/bin/openssl.old
cp -raf /usr/include/openssl /usr/include/openssl.old
cp -raf /usr/lib64/libssl.so  /usr/lib64/libssl.so.lod
cp -raf /usr/lib64/libssl.so.1.0.1e /usr/lib64/libssl.so.1.0.1e.old
cp -raf /usr/lib64/libssl.so.10  /usr/lib64/libssl.so.10.old
cp -raf /usr/lib64/libcrypto.so.10  /usr/lib64/libcrypto.so.10.old

openssl 安裝

Openssl 下載地址: https://www.openssl.org/source/old/1.0.2/

我這使用的版本是 openssl-1.0.2j

tar  -xzvf  openssl-1.0.2j.tar.gz
cd  openssl-1.0.2j/
./config --prefix=/usr/local/openssl102j  shared
make  && echo $?
make test && echo $?
make install && echo $?

openssl 配置

#  以下刪除的前面都已經備份
rm  -rf  /usr/bin/openssl
ln -s /usr/local/openssl102j/bin/openssl  /usr/bin/openssl
rm  /usr/include/openssl
ln -s /usr/local/openssl102j/include/openssl  /usr/include/openssl
rm  /usr/lib64/libssl.so  
ln -s  /usr/local/openssl102j/lib/libssl.so.1.0.0  /usr/lib64/libssl.so
rm   /usr/lib64/libssl.so.10
ln -s  /usr/local/openssl102j/lib/libssl.so.1.0.0  /usr/lib64/libssl.so.10
rm  /usr/lib64/libcrypto.so.10
ln -s  /usr/local/openssl102j/lib/libcrypto.so.1.0.0   /usr/lib64/libcrypto.so.10

echo "/usr/local/openssl102j/lib"  >> /etc/ld.so.conf  

載入依賴和檢查

ldconfig -v 
openssl version -a

參考文獻

Openssl 下載地址: https://www.openssl.org/source/old/1.0.2/

https://www.cnblogs.com/leekeggs/p/9557205.html

https://blog.csdn.net/u012949658/article/details/53771871

相關文章