it-swarm.com.de

SSH: Tunnel ohne Shell auf SSH-Server

Ich muss einen Tunnel zwischen zwei Hosts einrichten.

Dafür benutze ich ssh folgendermaßen:

ssh -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT [email protected]_SERVER

danach melde ich mich bei meinem SSH_SERVER an.

Wie kann ich diese Funktion vermeiden?! Ich muss nur einen Tunnel bauen. Ich muss mich nicht bei meinem SSH_SERVER anmelden ...

Ich habe die Option -N ausprobiert, aber meine Shell war damit beschäftigt.

77
Bau Miao

Wie in anderen Beiträgen erwähnt, müssen Sie die Option -N Von SSH verwenden, wenn Sie keine Eingabeaufforderung auf dem Remote-Host wünschen. Dadurch wird SSH jedoch ohne Eingabeaufforderung ausgeführt, und die Shell ist beschäftigt.

Sie müssen nur das SSH'ing als Hintergrundaufgabe mit dem Zeichen & Einfügen:

ssh -N -L 8080:ww.xx.yy.zz:80 [email protected] &

Dadurch wird das SSH-Tunneling im Hintergrund gestartet. Es können jedoch einige Meldungen angezeigt werden, insbesondere wenn Sie versuchen, eine Verbindung zu einem nicht empfangenden Port herzustellen (wenn Ihr Server Apache nicht gestartet ist). Um zu vermeiden, dass diese Nachrichten in Ihrer Shell erscheinen, während Sie andere Dinge tun, können Sie STDOUT/STDERR in die große Leere umleiten:

ssh -N -L 8080:ww.xx.yy.zz:80 [email protected] >/dev/null 2>&1 & 

Viel Spaß mit SSH.

81
Adrien M.

-f -N ist das, wonach Sie suchen:

ssh -f -N -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT [email protected]_SERVER

Von der Manpage ssh :

- 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 .

- N Führen Sie keinen Remote-Befehl aus. Dies ist nützlich, um nur Ports weiterzuleiten (nur Protokollversion 2).

- n Leitet stdin von /dev/null um (verhindert tatsächlich das Lesen von stdin). Dies muss verwendet werden, wenn ssh im Hintergrund ausgeführt wird.

61
neu242