系統預設 OpenSSH 版本較舊,可能存在已知漏洞(CVE-2023-XXXX 等)或不支援現代金鑰格式。從源碼編譯可掌控版本與編譯選項,確保安全合規。
# 安裝建構工具與依賴庫
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
# 官方發布頁: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
./configure --prefix=/usr \
--sysconfdir=/etc/ssh \
--with-pam \
--with-md5-passwords \
--with-ssl-dir=/usr \
--with-zlib=/usr \
--mandir=/usr/share/man \
--with-selinux
關鍵點:
--with-ssl-dir=/usr 即可;若已自編 OpenSSL(見前一文),改指向自編路徑--with-selinux:Red Hat 系必須啟用,否則 sshd 啟動會被 SELinux 拒絕make -j$(nproc)
make install
# 重啟 sshd
systemctl restart sshd
# 確認版本
ssh -V
# OpenSSH_9.6p1, OpenSSL 3.0.12 ...
# 檢查服務狀態
systemctl status sshd
ss -ntlp | grep :22
sshd -T 檢查有效配置參數/var/log/secure 或 journalctl -u sshd 確認無錯誤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 介面以防遠端連線中斷。自動化腳本化升級流程可降低人為錯誤。