đ» The Server tmpfs Trap: /run/sshd Disappears After Reboot, SSH Refuses Connection
The Symptom Server reboots. SSH hangs at connection. Console in: sshd running, port open, firewall fine. Still won't connect. Check sshd logs: Missing privilâŠ

The Symptom
Server reboots. SSH hangs at connection. Console in: sshd running, port open, firewall fine. Still won't connect.
Check sshd logs: Missing privilege separation directory: /run/sshd
Why This Happens
Modern SSH uses privilege separation â sshd splits into privileged and unprivileged processes. The unprivileged child needs /run/sshd. But /run is tmpfs â it lives in RAM and gets wiped on every reboot. On minimal VPS installs, the systemd rule that recreates it can be missing.
Immediate Fix
mkdir -p /run/sshd
chmod 0755 /run/sshd
systemctl restart sshd
SSH works immediately. But the directory disappears again on next reboot.
Permanent Fix
# Create /etc/tmpfiles.d/sshd.conf
echo "d /run/sshd 0755 root root" > /etc/tmpfiles.d/sshd.conf
Verify: systemd-tmpfiles --create /etc/tmpfiles.d/sshd.conf
Lesson
Anything in /run or /tmp that a service depends on needs a tmpfiles.d rule. Never assume a directory survives a reboot just because it exists right now. Always verify your setup survives a reboot before calling it production-ready.