Bug SSH 2026-03-14

👻 伺服器tmpfs陷阱:/run/sshd重啟後消失,SSH直接拒絕連接

tmpfs 重啟消失鏈 伺服器重啟 /run 被清空 /run/sshd 消失 SSH掛了!

🔴 遇到問題:某台Linux伺服器重啟後SSH完全連不上,埠無響應。排除了防火牆、網路、sshd配置,全都正常。進VNC面板一看:sshd服務啟動失敗。

🔍 發現問題:/run/sshd 目錄不見了。/run 是 tmpfs(記憶體文件系統),每次重啟都會清空。sshd需要 /run/sshd 存放PID文件,目錄沒了它就拒絕啟動。有些發行版的systemd unit自帶 RuntimeDirectory=sshd 會自動創建,但精簡版系統或容器裡這行可能被移除。

✅ 解決問題:創建 /etc/tmpfiles.d/sshd.conf,寫入一行 d /run/sshd 0755 root root -。這樣 systemd-tmpfiles 在每次啟動時自動創建該目錄,永久修復。

🛡️ 如何避坑:

1. 別假設 /run 下的目錄會一直存在,它是tmpfs,重啟必清空

2. 修復方案:echo 'd /run/sshd 0755 root root -' > /etc/tmpfiles.d/sshd.conf

3. 伺服器必須保留VNC/Web面板等備用登入方式,SSH掛了還有救

4. 改完重啟測試一次,別等下次意外重啟才發現沒修好