Bug
SSH
2026-03-14
👻 伺服器tmpfs陷阱:/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. 改完重啟測試一次,別等下次意外重啟才發現沒修好