Kiedyś ssh -L 10002:192.168.0.30:10002 192.168.1.135
ustanawiałem przekierowanie portów, ale teraz muszę go usunąć.
Jak mam to zrobic?
Kiedyś ssh -L 10002:192.168.0.30:10002 192.168.1.135
ustanawiałem przekierowanie portów, ale teraz muszę go usunąć.
Jak mam to zrobic?
Odpowiedzi:
Jeśli używasz Linuksa, możesz zabić proces poprzez:
ps aux | grep ssh
a następnie użyj
kill <id>
Aby zabić proces.
Jeśli polecenie zabicia nie powiedzie się, możesz spróbować
kill -9 <id>
kill -9
dopóki nie spróbujesz kill
. Wiele procesów będzie miało procedury obsługi sygnałów, które oczyszczą ich wykorzystanie zasobów, wyczyszczą połączenia i wykonają inne zadania przed zamknięciem. Jeśli zabijesz za pomocą -9, proces umiera natychmiast, bez czyszczenia. Zabijanie bez -9 będzie działać przez większość czasu.
kill -9
bez powodu przypomina strzelanie do komara. :)
pgrep ssh | xargs kill
. Nie używaj -9
za darmo
ssh
polecenie lub że wszystkie uruchomione ssh
polecenia są w porządku do zabicia. To nie jest dobre ogólne założenie.
ssh
instancjami na wielu zdalnych serwerach przez cały czas, niektóre z nich bez mojego bezpośredniego aktywnego udziału. Na przykład tryb Trac Emacsa otwiera ssh
połączenie za kulisami, gdy odwiedzam zdalny bufor. Niektóre osoby używają systemów plików przestrzeni użytkownika, które robią coś podobnego. To wcale nie jest rzadkie. W rzeczywistości zakładałbym, że pojedynczy użytkownik, pojedyncza ssh
instancja jest przypadkiem marginalnym. Jeśli to dla ciebie działa, to dobrze dla ciebie, ale nie jest to dobra ogólna rada.
Podczas korzystania z multipleksowania ssh zabicie procesu ssh jest często niepożądane (zabija wszystkie otwarte połączenia z tym hostem) i nie można łatwo uzyskać dostępu do escape, ponieważ „escape niedostępny dla sesji multipleksowanych”. Właściwy sposób to uruchomienie analogu polecenia przekazywania, które chcesz anulować, ale dodając -O cancel
. Na przykład:
ssh -O cancel -L 10002:192.168.0.30:10002 192.168.1.135
Spowoduje to wyłączenie przekierowania portów bez przerywania sesji. Ponownie zadziała to tylko wtedy, gdy do połączenia z 192.168.1.135 jest używane multipleksowanie ssh .
ssh -O exit 192.168.1.135
.
Jak anulować przekierowany port w już uruchomionej sesji SSH:
-KL port
Powinieneś to zobaczyć:
ssh> -KL 10002
Canceled forwarding.
Możesz użyć „klawisza Escape” (zwykle ~), a następnie C, aby uzyskać cli do połączenia. Możesz stamtąd usunąć tunele bez zrywania połączenia.
Możesz wejść do interaktywnej konsoli, wpisując ~C(wielkie „C”). Pozwala to dynamicznie dodawać i usuwać przekierowania portów (między innymi).
Ta sekwencja musi przyjść zaraz po powrocie karetki / nowej linii. W razie wątpliwości wystarczy wpisać Enter~C(w sekwencji).
Jeśli nie widzisz postaci pojawiających się na konsoli, robisz to dobrze :)
Powinieneś teraz zobaczyć ssh>
monit.
Aby usunąć port, po prostu wpisz, -KL 10002
a następnie Enter(gdzie 10002
jest Twój przekierowany port).
Odwrotność - dodawanie nowego do przodu - można wykonać w następujący sposób (od początku do końca):
Enter~C
ssh> -L 10002:192.168.0.30:10002
Enter
~C escape not available to multiplexed sessions
. W takim przypadku zobacz doskonałą odpowiedź a3nm.
Warning: remote port forwarding failed for listen port
komunikat.