Ich öffne einen SSH-Tunnel programmgesteuert mit:
sshpass -p "my_password" ssh -fN -o StrictHostKeyChecking=no -o ExitOnForwardFailure=yes remote_user@remote_server.tld -L 13306:127.0.0.1:3306 sleep 3
und funktioniert wie erwartet, schließt aber nicht nach 3 Sekunden Inaktivität.
Ich nehme die SSH-PID und beende die Verbindung explizit, wenn diese beendet wird. Mir ist allerdings die sleep
Variante lieber, bei der der Tunnel automatisch geschlossen wird.
Wird die Nutzung sshpass
den Tunnel offen halten oder mache ich etwas falsch?
Antwort1
Du benutzt
-f
Fordert ssh auf, kurz vor der Befehlsausführung in den Hintergrund zu gehen. Dies ist nützlich, wenn ssh nach Passwörtern oder Passphrasen fragt, der Benutzer dies aber im Hintergrund möchte. Dies impliziert -n. Die empfohlene Methode zum Starten von X11-Programmen auf einem Remote-Standort ist etwas wie ssh -f host xterm.
Und
-N
Führen Sie keinen Remote-Befehl aus. Dies ist nur zum Weiterleiten von Ports nützlich.
Das geht in den Hintergrund, bevor ein Befehl ausgeführt wird (der unterdrückt wird). Daher bleibt es im Hintergrund. Es sleep
wird nie ausgeführt und wartet darauf, beendet zu werden.