OpenSSH 10.4 於 2026 年 7 月 6 日發布,10.5 於 2026 年 8 月 11 日發布。這兩個版本已經或即將隨各發行版的更新進到你的伺服器上,其中有三處被官方標註為「可能不相容」的變更,值得在升級前先看一眼——因為 sshd 出問題的代價是你連不上去修它。
10.4 的三處不相容變更
- 設定傾印改用混合大小寫指令名。
sshd -T/ssh -G這類輸出現在寫作PubkeyAuthentication而不是全小寫。任何用sshd -T | grep pubkeyauthentication判斷設定的腳本會靜默失配——不報錯,只是永遠比對不到,然後你的稽核或自動化會得出錯誤結論。改成grep -i即可。 - Linux 上 seccomp 沙箱初始化失敗從「繼續執行」改成「致命錯誤」。以前 sshd 在沙箱不可用時會退而求其次繼續服務,現在直接失敗。在舊核心、受限容器、部分虛擬化平台上,這意味著升級之後 sshd 可能起不來。這個改動方向是對的(沙箱靜默失效等於安全假設被架空),但升級前你必須知道它。
- 傳輸層更嚴格:認證後重新協商(rekey)期間收到非 KEX 訊息會直接斷線。正常用戶端不會踩到,但一些老舊的函式庫、跳板工具、長連線工作階段可能在長時間連線後突然斷開。如果升級後出現「跑一兩個小時就掉線」,先懷疑這裡。
10.4 同時修了三個安全問題:sftp 用戶端的下載位置可被伺服器端操縱、scp 遠端到遠端傳輸的限制,以及 internal-sftp 命令列參數截斷導致安全選項失效。最後這一條尤其值得注意:如果你用 internal-sftp 加參數來做受限的 SFTP 帳號,參數被截斷意味著你以為加上的限制可能根本沒生效。
10.5 的不相容項與新功能
10.5 的「可能不相容」只有一條:可攜版 OpenSSH 現在要求 libcrypto 提供 ECC 支援,包括 NISTP521 曲線。用發行版套件的人不受影響;自己在裁剪過的 OpenSSL 上編譯的,會在建置階段直接失敗。
新功能裡最實用的是 ssh -Z:按實際嘗試順序印出公開金鑰認證過程中試過的金鑰。這直接解決了最常見的一類 Permission denied (publickey)——本機金鑰太多、ssh-agent 裡堆了七八把,伺服器端的 MaxAuthTries(預設 6)在輪到正確的那把之前就被用光了。以前只能靠 ssh -vvv 在一堆輸出裡數順序,現在一條指令看清楚。
其餘 10.5 的改動:ssh-keygen 可以設定或清除 FIDO 私鑰的 touch-required / verify-required 旗標;憑證認證會優先嘗試摩擦更低的 FIDO 金鑰;sshd 用 setproctitle(3) 把認證後的監控行程標記成 sshd-session,看行程清單時更容易分辨。
升級 sshd 的紀律(這條比版本號重要)
- 永遠留一個已經連上的工作階段不要斷。升級並重啟 sshd 之後,用另一個新視窗連一次,確認能進去,再關掉原來那個。已建立的連線不受 sshd 重啟影響,這就是你的安全繩。
- 改完設定先做語法檢查:
sudo sshd -t;想看最終生效的設定用sudo sshd -T(記得大小寫變了)。 - 容器或舊核心上,升級前確認 seccomp 可用,否則會撞上上面那條致命化改動。
- 提前準備帶外通道。服務商的 VNC/序列主控台/救援模式,要在需要它之前就知道怎麼進。
真被鎖在外面了怎麼辦
先分清是網路層不通還是 SSH 服務本身的問題,兩者的排查方向完全不同:《連不上 VPS 的 SSH?逐步排查清單》給了從本機網路、防火牆、連接埠到服務狀態的完整順序,《SSH 逾時連不上時該怎麼辦》側重逾時這一類症狀。日常預防的部分——金鑰登入、ufw 規則、改連接埠是否值得——在《VPS 安全加固:ufw 防火牆與 SSH 金鑰登入》裡。SharkCloud 的每個執行個體都可以從主控台直接進入,即使 sshd 徹底起不來,也不必重灌系統。