Wenn man im Netz nach autostart reverse ssh tunnel
sucht findet man oft Einträge zu autossh.
Seit systemd ist autossh allerdings obsolet.
Konfiguration
Man kann sich einfach für systemd eine Unit Konfiguration erzeugen. Einfach eine Datei mit folgendem Inhalt anlegen.
/etc/systemd/system/ssh-tunnel.service
[Unit]
Description=Reverse SSH tunnel to externerServer.de
After=network-online.target
[Service]
User=username
ExecStart=/usr/bin/ssh -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -o ExitOnForwardFailure=yes -NR 8888:localhost:9999 -NR 1883:localhost:1883 user@externerServer.de
RestartSec=30
Restart=always
[Install]
WantedBy=multi-user.target
In diesem Beispiel werden sogar zwei Reverse Tunnel aufgebaut zu einem Endpunkt. Es würde ein -NR
Konstrukt reichen. Hier landet alles von Port 9999 der Tunnel erzeugenden Maschine auf 8888 der Zielmaschine.
Anschließend mit
systemctl enable ssh-tunnel
aktivieren (ssh-tunnel entspricht hier dem Dateinamen der Unit Konfiguration).
Fehlersuche
Falls die Verbindung nach einem Neustart nicht zustande kommt. Einfach mal als User
aus der Unit Konfiguration einloggen und versuchen mit dem ExecStart
Kommando den Reverse Tunnel manuell aufzubauen bis alles wie gewünscht funktioniert.