Persistent SSH tunnel with autossh
Overview
To access websites behind an internal network, I proxy web traffic to specific DNS domains over an ssh
connection using the SOCKS protocol. The SwitchyOmega plugin takes care of site specific proxying and autossh
securely forwards all SOCKS traffic through the ssh
tunnel.
To handle network instability, VPN connectivity, and laptop mobility, autossh
automatically restarts the ssh
tunnel during network changes or failures.
Details
Prerequisite
ssh
key authentication must be setup prior to using autossh
. The ssh
session can not prompt for a password.
Tunnel Setup
Start the ssh
tunnel using autossh
:
autossh -f -D 5555 -N -M 0 host.example.com
Testing
Test the connection:
jemurray@mbp-2019:~ $ telnet localhost 5555
Trying ::1...
Connected to localhost.
Escape character is '^]'.
quit
Connection closed by foreign host.
Kill the ssh
test on the remote site for testing:
# Look for the process without a pty session associated with it
jemurray@host:~$ ps -ef | grep ssh | grep jemurray
jemurray 18053 17885 0 15:49 ? 00:00:00 sshd: jemurray@pts/10
jemurray 20287 20119 0 15:53 ? 00:00:00 sshd: jemurray
# kill the process
jemurray@host:~$ kill 20287
The session dies, but automatically restarts:
emurray@mbp-2019:~ $ telnet localhost 5555
Trying ::1...
Connected to localhost.
Escape character is '^]'.
quit
Connection closed by foreign host.