This systemd unit maintains an SSH tunnel of your choice. No root required.
A systemd unit template file needs to be installed in order to run tunnels.
Running install.sh
copies labtunnel@.service to your ~/.config/systemd/user
. Do not use sudo.
Read man systemd.unit
for more information on templates.
To define a tunnel, add the following lines to your ~/.ssh/config:
Host [Your tunnel name]
HostName [ip or url to remote computer]
Port [ssh port, usually 22]
User xren
IdentityFile ~/.ssh/zlab.key
LocalForward [local port to access your tunnel] localhost:[remote port you want to connect to]
Read man ssh_config
for more info.
To start your tunnel, substitute the tunnel name you defined into the following command:
systemctl --user start labtunnel@[your tunnel name]
To set-up autostart, use the same command but replace start
with enable
:
systemctl --user enable labtunnel@[your tunnel name]
See more at man systemctl
Run uninstall.sh
from the project directory. The script removes autostart tunnels and the installed systemd template file.
After uninstalling, if you don't delete the lines you added to your ssh config, you may still run ssh [your tunnel name] to access the tunnels manually.
This project is based off drmalex07's systemd ssh tunneler at https://gist.github.com/drmalex07/c0f9304deea566842490.
My improvements include:
- No privileges required: everything is installed in ~/.config/systemd/user
- Install/uninstall scripts
- Uses ssh_config: can define all sorts of ssh connections, not just local tunnels