SSH-Tunnel im Hintergrund

17

Ich habe einen Prozess, der erwartet, dass eine SSH-Tunnelverbindung korrekt ausgeführt wird, und ich habe den folgenden Befehl verwendet:

ssh -L localhost:3306:127.0.0.1:3306 username@<mysql-machine-ip-address> -N &

Ich habe dies 8 Monate lang erfolgreich ausgeführt. Vor kurzem musste unser Hosting-Anbieter Hardware-Änderungen vornehmen, um unseren Computer zu aktualisieren, und unseren Computer mit einem neuen Kernel für Ubuntu aktualisiert haben. Es ging von 4.8.3-x86_64-linode76 auf 4.8.6-x86_64-linode78.

Nach einigen Problemen mussten wir den Befehl folgendermaßen aktualisieren:

ssh -L localhost:3306:127.0.0.1:3306 username@<mysql-machine-ip-address> -fN

Bei der Recherche in der ssh-Dokumentation den Parameter -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 fragen soll, der Benutzer dies jedoch im Hintergrund wünscht. Dies impliziert -n. Die empfohlene Methode zum Starten von X11-Programmen an einem Remotestandort ist die Verwendung von ssh -f host xterm.

Bei der Suche nach dem Befehl bash für "&"

Stellen Sie einen Prozess in den Hintergrund (siehe Multitasking unter "Zwischenverwendung von> UNIX-Betriebssystem").

Gibt es grundsätzlich einen Unterschied zwischen diesen beiden Befehlen?

Develop4fun2011
quelle

Antworten:

22

Ja da ist. ssh &läuft sshvon Anfang an im Hintergrund. ssh -fBeginnt sshim Vordergrund und ermöglicht die Eingabe von Passwörtern usw. und sshstellt sich erst danach in den Hintergrund, bevor der angeforderte Befehl ausgeführt wird.

AlexP
quelle
Haben Sie eine Ahnung, warum ich mit dem neuen Server gezwungen wäre, das ssh -f anstelle des ssh & zu verwenden? Darüber hinaus klingt es so, als ob ssh -f ein besserer Ansatz ist. Würden Sie dem zustimmen?
Develop4fun2011
Vielleicht hat das neue System einen neueren (oder nur einen anderen) SSH-Client?
AlexP