Podczas tworzenia tuneli zwrotnych w najnowszych wersjach OpenSSH można podać zdalny port 0 w celu powiązania dowolnego dostępnego portu:
-R [adres_powiązania:] port: host: port hosta
...
Jeśli argumentem portu jest „0”, port nasłuchiwania zostanie dynamicznie przydzielony na serwerze i zgłoszony klientowi w czasie wykonywania.
Strona klienta klienta openssh ssh
Moje pytanie brzmi: w jaki sposób (w sposób zautomatyzowany) mogę określić ten przydział portów na serwerze. Wydaje się raczej nieprzydatne, że jest zgłaszane do hosta z uruchomionym klientem ssh - ale nie do celu, który będzie chciał nawiązać połączenia z tym portem, aby uzyskać dostęp do usług na kliencie.
Dwie podobne opcje, o których myślę, są uruchomione
# netstat -ntlp
na serwerze i poszukaj podejrzanych portów powiązanych 127.0.0.1 przez sshd lub patrząc na wynik
# lsof -p $PPID | grep TCP | grep LISTEN
Ale żaden z nich nie jest przyjemny z punktu widzenia automatyzacji i nie ma żadnego sposobu na powiązanie portów dynamicznych z powrotem z portem usługi początkowej, jeśli utworzono więcej niż jeden taki tunel.
Czy brakuje mi czegoś, aby skutecznie uzyskać listę aktywnych tuneli (zarówno numerów portów lokalnych, jak i zdalnych) po stronie serwera sshd, podobnie jak odpowiednik zmiennej środowiskowej SSH_CONNECTION, ale dla aktywnych tuneli?
W pewnym kontekście próbuję utworzyć potencjalnie bardzo wiele jednoczesnych tuneli zwrotnych do hosta, tunelując z powrotem do tego samego numeru portu na wielu różnych hostach. Automatyczne zarządzanie pulą portów przez stos TCP wydaje się być najbardziej efektywnym sposobem na zrobienie tego.