萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Red Hat Linux 升級 OpenSSH 實戰筆記:從源碼編譯到服務重啟

升級動機

系統預設 OpenSSH 版本較舊,可能存在已知漏洞(CVE-2023-XXXX 等)或不支援現代金鑰格式。從源碼編譯可掌控版本與編譯選項,確保安全合規。

完整升級步驟

1. 環境準備

# 安裝建構工具與依賴庫
yum install -y gcc make openssl-devel pam-devel zlib-devel libselinux-devel

# 建立專用建構目錄
mkdir -p /usr/local/src/openssh-upgrade
cd /usr/local/src/openssh-upgrade

2. 取得源碼(官方鏡像)

# 官方發布頁:https://www.openssh.com/portable.html
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.6p1.tar.gz
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.6p1.tar.gz.asc

# 驗證簽名(需匯入 OpenBSD 發布金鑰)
gpg --verify openssh-9.6p1.tar.gz.asc openssh-9.6p1.tar.gz

tar xzf openssh-9.6p1.tar.gz
cd openssh-9.6p1

3. 配置編譯選項

./configure --prefix=/usr \
            --sysconfdir=/etc/ssh \
            --with-pam \
            --with-md5-passwords \
            --with-ssl-dir=/usr \
            --with-zlib=/usr \
            --mandir=/usr/share/man \
            --with-selinux

關鍵點:

  • 若系統 OpenSSL 足夠新,--with-ssl-dir=/usr 即可;若已自編 OpenSSL(見前一文),改指向自編路徑
  • --with-selinux:Red Hat 系必須啟用,否則 sshd 啟動會被 SELinux 拒絕

4. 編譯與安裝

make -j$(nproc)
make install

5. 服務重啟與驗證

# 重啟 sshd
systemctl restart sshd

# 確認版本
ssh -V
# OpenSSH_9.6p1, OpenSSL 3.0.12 ...

# 檢查服務狀態
systemctl status sshd
ss -ntlp | grep :22

升級後檢查清單

  1. 遠端 SSH 連線測試(密碼/金鑰雙重驗證)
  2. sshd -T 檢查有效配置參數
  3. 審視 /var/log/secure 或 journalctl -u sshd 確認無錯誤
  4. 確認 SELinux 上下文正確:restorecon -R /etc/ssh

回滾方案

若升級導致服務異常,可快速回滾:

# 還原原版二進制檔(若已備份)
cp /usr/bin/ssh.bak /usr/bin/ssh
cp /usr/sbin/sshd.bak /usr/sbin/sshd
systemctl restart sshd

建議升級前對 /usr/bin/ssh*、/usr/sbin/sshd*、/etc/ssh/ 做完整備份。

結語

OpenSSH 升級屬高風險操作,務必在維護窗口進行,並準備好 Console/IDRAC 介面以防遠端連線中斷。自動化腳本化升級流程可降低人為錯誤。

copyright © 萬盛學電腦網 all rights reserved