SSH: Tunnel ohne Shell auf SSH-Server


63

Ich muss einen Tunnel zwischen zwei Hosts einrichten.

Dafür verwende ich sshauf diese Weise:

ssh -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER

Danach logge ich mich in mein SSH_SERVER ein.

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 dadurch war meine Shell beschäftigt.


SSH -N -L xx: xx: xx Benutzer @ Server & <- haben Sie das schon einmal versucht?
Lawrence

Hey, du hast recht. Ich habe es auf einem anderen Host versucht und die Option -N funktioniert. Ich habe festgestellt, dass das Problem bei meinem ssh-Client liegt (ich weiß nicht warum und werde den Grund dafür suchen). Danke vielmals!
Bau Miao

1
man sshzeigt, wie: ssh -f -L 1234:localhost:6667 server.example.com sleep 10 && irc -c '#users' -p 1234 pinky 127.0.0.1 Die Option -f hintergründe ssh und der Fernbefehl `` sleep 10 '' werden angegeben, um eine bestimmte Zeitspanne (im Beispiel 10 Sekunden) zum Starten des zu tunnelnden Dienstes zu ermöglichen. Wenn innerhalb der angegebenen Zeit keine Verbindung hergestellt wird, wird ssh beendet. `` `
lionello

Antworten:


71

Wie bereits in anderen Beiträgen erwähnt, müssen Sie die -NOption SSH verwenden , wenn Sie keine Eingabeaufforderung für den Remote-Host wünschen . Dadurch wird jedoch SSH ohne Eingabeaufforderung weiter ausgeführt, und die Shell ist beschäftigt.

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

ssh -N -L 8080:ww.xx.yy.zz:80 user@server &

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 empfangsbereiten Port herzustellen (wenn der Apache-Server 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 user@server >/dev/null 2>&1 & 

Viel Spaß mit SSH.


17
Sie können auch die Option ssh -fanstelle von &und io Redirection verwenden.
Tkrennwa

49

-f -N ist was Sie suchen:

ssh -f -N -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER

3
Wie schließen Sie den Tunnel nach dem Einrichten mit dieser Methode?
Magnetik

@magnetik Finde den Prozess mit psund killes
neu242

13
@magnetik und @ neu242, desto besser ist es, "master socket" zu verwenden, ssh -N -f -M -S /tmp/file-sock -L port:server:port_to user@...damit Sie die Verbindung später mit ssh -S /tmp/file -o exit user@....(oder kill) beenden können . Auf diese Weise keine Notwendigkeit, ps. Sie können festlegen, dass diese Datei automatisch in ~ / .ssh / config erstellt wird.
Metal3d

1
Ich meine "Control Socket" und nicht "Master Socket"
Metal3d

8
Es sollte sein ssh -S /tmp/file-sock -O exit, nicht -o en.wikibooks.org/wiki/OpenSSH/Cookbook/...
fetsh
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.