Do czego SSH używa UDP?

41

Wile podczas badań zauważyłem, że SSH używa zarówno TCP, jak i UDP. Całkowicie rozumiem użycie TCP, ale UDP wydaje się nieco dziwny. Dlaczego miałbym używać „niewiarygodnego” protokołu transportu z minimalnym uzgadnianiem w celu bezpiecznego dostępu do powłoki?

Jedyne, co mogę wymyślić, to SCP, więc (duża) transmisja plików. Ale czy TCP nie byłby bardziej użyteczny z powodu uzgadniania?

W rzeczywistości rozważam otwarcie TCP na SSH, ale nie wiedząc, jakie będą tego konsekwencje, byłoby to bardzo szkodliwe.


EDYTOWAĆ

Okazuje się, że istnieje nie tylko teza o ssh nad UDP, ale także w pełni rozwinięta implementacja ssh, zwana mosh . Jednak klasyczny ssh nadal używa tylko TCP, jak określono w jego RFC .

alex
źródło
2
Jak myślisz, dlaczego SSH używa UDP? Próbowałem z kilkoma połączeniami SSH z Windows do Unixa i Unixa do Unixa i nie otrzymuję żadnego pakietu UDP na porcie 22. Również serwer nasłuchuje tylko w TCP.
mtak
1
Cóż, Wikipedia mówi tyle samo en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers Również użytkownicy w sieci zdają się tunelować niektóre rzeczy za pomocą kombinacji ssh-udp, ale po prostu nie było jasne, dlaczego używają UDP, a nie TCP. Stąd moje pytanie.
alex
W tej pracy próbowali zaimplementować UDP dla transportu SSH, ale wspominają również, że domyślnie używa tylko TCP: „OpenSSH konsekwentnie używa TCP dla wszystkich swoich połączeń sieciowych, a tym samym dla swojej funkcji VPN.”. Strona Wikipedii może powiedzieć, że jest to UDP, ponieważ programiści SSH początkowo poprosili o przypisanie UDP i TCP, ale powiązany RFC nie wspomina o tym. Ale muszę się zgodzić, interesujące pytanie.
mtak
Huh Nie spodziewałem się tego. Cóż, napisz to jako odpowiedź, zasługujesz na kilka punktów.
alex

Odpowiedzi:

44

Próbowałem z kilkoma połączeniami SSH z Windows do Unixa i Unixa do Unixa i nie otrzymuję żadnego pakietu UDP na porcie 22. Również serwer nasłuchuje tylko w TCP.

W tej pracy próbowali zaimplementować UDP dla transportu SSH, ale wspominają również, że domyślnie używa tylko TCP: „OpenSSH konsekwentnie używa TCP dla wszystkich swoich połączeń sieciowych, a tym samym dla funkcji VPN.”. Strona Wikipedii może powiedzieć, że jest to UDP, ponieważ programiści SSH początkowo poprosili o przypisanie UDP i TCP, ale powiązany RFC nie wspomina o tym.

mtak
źródło
5

... Protokół SSH używa lub używał 22 / UDP do sterowania tunelowaniem przez TCP. Jeśli poprawnie zdekodowany przez Wireshark i tunelujesz połączenie za pośrednictwem agenta ssh lub tunelujesz zdalnie lub lokalnie, zauważysz, że UDP jest zamknięty w segmentach TCP.

Użytkownik root
źródło