SIDEDOOR(1)

✨ SIDEDOOR β€” the SSH connection daemon that simply never gives up πŸ’–

okay so bestie, welcome to sidedoor(1) from the General Commands Manual πŸŽ€ this one's a whole vibe and honestly kind of iconic.


🌸 NAME 🌸

sidedoor β€” an SSH connection daemon. yes really, that's the whole name, and it understood the assignment πŸ’…


✨ SYNOPSIS ✨

sidedoor [SSH options] [user@]hostname

πŸ¦‹ DESCRIPTION πŸ¦‹

so here's the tea: sidedoor keeps an SSH connection or tunnel alive using a shell script daemon. it's giving "loyal friend who texts back every single time" energy 🫢

the main character use case? maintaining a remote port forward to the local SSH server (or literally any other port). that way your local device can be reached without needing incoming connections β€” which, no cap, are often blocked by a NAT or firewall, or are just plain impractical on mobile devices 😭

SSH clients can then connect to the device through the reverse SSH proxy that sidedoor tunnels to. and here's the fun part: this proxy server can be untrusted and run by a third party or a cloud service πŸ‘‘ like, you don't have to trust it, and that's the point.

sidedoor also:

  • enables SSH keepalives πŸ’«
  • retries SSH with exponential backoff πŸ“ˆ
  • and because it wants to reconnect ASAP, it resets the backoff whenever a network interface is brought up (or changed) πŸ”₯

πŸ’… OPTIONS πŸ’…

see ssh(1). that's it, that's the section, it's very "go ask my sibling" of it πŸ’€


🌈 SIGNALS 🌈

  • SIGUSR1 β€” resets the retry backoff, immediately retrying ssh(1) if it isn't currently running. slay ⭐

πŸ“ FILES πŸ“

  • /etc/default/sidedoor β€” arguments to pass to sidedoor when it's run as a service. see ssh(1).
  • /etc/sidedoor/config β€” the SSH client configuration file.
  • /etc/sidedoor/id_rsa β€” the SSH private key used to access the remote server.

ssh-keygen(1) can generate this key. press y when prompted to overwrite the existing file, bestie, it will ask πŸ™ˆ:

$ sudo ssh-keygen -t rsa -N '' -f /etc/sidedoor/id_rsa

the corresponding public key id_rsa.pub will need to be included in the remote user's ~/.ssh/authorized_keys file. don't skip this step, i'm literally begging πŸ₯Ί

  • /etc/sidedoor/known_hosts β€” the SSH host key of the remote server.
  • /etc/sidedoor/authorized_keys β€” optionally, SSH public key(s) with remote access to the local sidedoor user.

this is a symlink to ~sidedoor/.ssh/authorized_keys. and heads up: the sidedoor-sudo package provides full root access to this user πŸ‘€ so like, treat this file with the respect it deserves.

  • /etc/network/if-up.d/sidedoor β€” sends SIGUSR1 to reset the retry backoff on network state changes. the little script that could 🧚

πŸ’œ SEE ALSO πŸ’œ

ssh(1), /usr/share/doc/sidedoor/README.md.gz


okay that's the whole page, you ate that πŸ’– go forth and tunnel responsibly.

and that's a wrap on sidedoor(1) from the General Commands Manual, dated 2017-01-14 πŸŽ€ mwah, bye bestie ✨