Server Troubleshooting
Permission denied (publickey)
Section titled “Permission denied (publickey)”Their key is not installed, the file permissions are wrong, or their username is not on AllowUsers.
Check all three, in that order.
Works by IP but not by the .ts.net name
Section titled “Works by IP but not by the .ts.net name”MagicDNS is off, or that device never accepted the tailnet invite.
Worked for weeks, then stopped
Section titled “Worked for weeks, then stopped”The server’s node key expired. Disable key expiry in Tailscale — see Step 7, item 4.
This is the failure that arrives about 90 days in, long after you have stopped thinking about setup.
Random disconnects when several people are on
Section titled “Random disconnects when several people are on”Out of memory — the system killed a process. Run free -h. Add swap or move to a larger plan.
“dubious ownership” when using Git
Section titled ““dubious ownership” when using Git”git config --global --add safe.directory ~/bosClaude Code icon missing after connecting
Section titled “Claude Code icon missing after connecting”The extension was installed locally instead of in the remote window. Reinstall it using the Install in SSH button — see Connect Your Editor.
Locked out completely
Section titled “Locked out completely”Use the Hetzner console’s built-in Rescue mode. It gets you in without SSH.
This is why the guide is ordered the way it is — but if it happens anyway, you are not stranded.
Everything after setup
Section titled “Everything after setup”For the system itself rather than the server, see Troubleshooting.