Używam wielu tuneli SSH do różnych serwerów na moim komputerze z systemem Linux (do tunelowania do baz danych, serwerów WWW itp.) I byłoby bardzo przydatne, aby wyświetlić listę aktualnie otwartych tuneli za pomocą skryptu powłoki.
Potrafię zidentyfikować połączenia lokalne za pomocą grep na netstat zgodnie z następującymi zasadami:
netstat -n --protocol inet | grep ':22'
ale to nie pokaże mi zdalnego portu, do którego jest podłączony (i oczywiście obejmuje standardowe połączenia SSH, które nie są tunelowane)
AKTUALIZACJA : Odpowiedzi są w porządku, ale nie pokazują mi zdalnego portu, z którym jestem połączony. Np. Często mam tunel do mysql, powiedz localhost: 3308 mapowanie na: 3306 na serwerze. Zwykle mogę zgadywać po lokalnych portach, które wybrałem, ale byłoby miło mieć dostęp do obu.
Jakieś pomysły?
źródło
Odpowiedzi:
jeśli chcesz tylko wyświetlić listę tuneli utworzonych przez
ssh
:(byłoby to -L 9090: localhost: 80 tunel)
jeśli chcesz zobaczyć tunele / połączenia wykonane z
sshd
:demon ssh nasłuchuje na porcie 22 (ostatnia linia), odradzane są 2 podprocesy (pierwsze 2 linie, logowanie „użytkownika”), tunel -R utworzony na porcie 5000 i tunel -L, który przekazuje port z mojego ( lokalny) komputer do lokalnego hosta: 80 (www).
źródło
Wypróbuj to polecenie, może być przydatne:
źródło
nie do końca rozwiązanie problemu, ale czasem przydatne:
Z poziomu sesji ssh:
wyświetla listę wszystkich otwartych połączeń w tunelach dla tej sesji.
źródło
EDYCJA: przykład komentarza @akira:
Można to odczytać jako: SSH (nie SSHd) nasłuchuje lokalnego portu TCP 1443.
źródło
-p
pokazuje tylko twoje własne procesy (wszystkie procesy według roota). To poleceniesshd
również się pokazuje .-l
-R
tuneli, jeśli nie są używane. Ale dobrze, jeśli w użyciu, można je złapać bez-l
To jest najlepszy wynik Google dla tego pytania, więc zamieszczę tutaj swoją odpowiedź. Nie spałem całą noc, filtrując wyniki, i wymyśliłem długie, złożone polecenie, które pokazuje tylko twoje odwrócone tunele ssh w tym formacie:
publicipaddress: remoteforwardedport
Oto kod: uruchamiam Ubuntu Server 12. Korzystam z tuneli odwrotnych ssh, które przekazują lokalny port 5900 do mojego publicznego serwera ssh, a to fajne polecenie pokazuje wszystkie moje publiczne adresy IP ze zdalnym portem.
źródło
Przykładowe dane wyjściowe:
źródło
źródło
źródło
Ponieważ nie lubię lsof, proponuję alternatywną metodę (nauczył mnie inny facet :)):
$ netstat -l | grep ssh
W ten sposób wyświetlasz utworzone przez siebie tunele ssh,
ssh
które są otwarte w trybie LISTEN (i domyślnie są pomijanenetstat
).źródło