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 retryingssh(1)if it isn't currently running. slay β
π FILES π
/etc/default/sidedoorβ arguments to pass tosidedoorwhen it's run as a service. seessh(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β sendsSIGUSR1to 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 β¨
π¦ where this page comes from
- debian bookworm: sidedoor 0.2.1-1.2 Β· GPL-3.0-or-later
- debian trixie: sidedoor 0.2.1-1.3 Β· GPL-3.0-or-later
- ubuntu jammy: sidedoor 0.2.1-1.1 Β· GPL-3.0-or-later
- ubuntu noble: sidedoor 0.2.1-1.2 Β· GPL-3.0-or-later
- ubuntu questing: sidedoor 0.2.1-1.3
- ubuntu resolute: sidedoor 0.2.1-1.3build1 Β· GPL-3.0-or-later
- ubuntu stonking: sidedoor 0.2.1-1.3build1 Β· GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms