SSH: tunel bez powłoki na serwerze ssh


63

Muszę ustawić tunel między dwoma hostami.

Do tego używam sshw ten sposób:

ssh -L MY_LOCAL_PORT:FOREIGN_ADDRESS:FOREIGN_PORT MYUSER@SSH_SERVER

po tym loguję się do mojego SSH_SERVER.

Jak mogę uniknąć tej funkcji ?! Muszę tylko założyć tunel. Nie muszę się logować do mojego SSH_SERVER ...

Próbowałem opcji -N, ale utrzymywało to moją powłokę.


SSH -N -L xx: xx: xx użytkownik @ serwer i <- czy próbowałeś tego wcześniej?
Lawrence,

Hej, masz rację. Próbowałem na innym hoście i działa opcja -N. Odkryłem więc, że problem dotyczy mojego klienta ssh (nie wiem dlaczego i szukam przyczyny). Wielkie dzięki!
Bau Miao,

1
man sshpokazuje, jak: ssh -f -L 1234:localhost:6667 server.example.com sleep 10 && irc -c '#users' -p 1234 pinky 127.0.0.1 Określono opcję -f tła ssh i zdalne polecenie `` uśpienie 10 '', aby dać czas (10 sekund, w przykładzie) na uruchomienie usługi, która ma być tunelowana. Jeśli w podanym czasie nie zostaną wykonane żadne połączenia, ssh zakończy działanie. ``
lionello

Odpowiedzi:


71

Jak powiedziano w innych postach, jeśli nie chcesz monitować na zdalnym hoście, musisz użyć -Nopcji SSH. Ale to powoduje, że SSH działa bez wyświetlania monitu, a powłoka jest zajęta.

Wystarczy umieścić SSH'ing jako zadanie w tle ze &znakiem:

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

Spowoduje to uruchomienie tunelowania ssh w tle. Ale niektóre komunikaty mogą się pojawiać, szczególnie gdy próbujesz połączyć się z portem, który nie nasłuchuje (jeśli serwer Apache nie został uruchomiony). Aby uniknąć odradzania się tych wiadomości w powłoce podczas wykonywania innych czynności, możesz przekierować STDOUT / STDERR do dużej pustki:

ssh -N -L 8080:ww.xx.yy.zz:80 user@server >/dev/null 2>&1 & 

Baw się dobrze z SSH.


17
Możesz także użyć opcji ssh -fzamiast &i io przekierowania.
tkrennwa

49

-f -N czego szukasz:

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

3
Po skonfigurowaniu tunelu, jak go zamknąć tą metodą?
magnetik

@magnetik Znajdź proces z psi killit
neu242

13
@magnetik i @ neu242, lepiej jest użyć „gniazda głównego”, ssh -N -f -M -S /tmp/file-sock -L port:server:port_to user@...aby później móc zabić połączenie ssh -S /tmp/file -o exit user@....(lub zabić). W ten sposób nie ma potrzeby ps. Możesz powiedzieć, aby automatycznie utworzyć ten plik w ~ / .ssh / config.
Metal3d

1
Mam na myśli „gniazdo kontrolne”, a nie „gniazdo główne”
Metal3d

8
Powinno być ssh -S /tmp/file-sock -O exit, nie -o en.wikibooks.org/wiki/OpenSSH/Cookbook/...
fetsh
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.