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. 改完重启测试一次,别等下次意外重启才发现没修好