O ile wiem, to błąd w WSL. Mamy nadzieję, że Microsoft naprawi to w następnej wersji. Ale na razie możemy użyć tego nieco brzydkiego hacka.
Aktualizacja nr 1 : Zdecydowanie błąd. Znalazłem ten problem na Github. Proponowane przeze mnie obejście ponownego uruchomienia powłoki działa również dla mnie, jeśli nie chcesz przejść przez to wszystko.
TL; DR Dodaj to, aby ZAKOŃCZYĆ konfigurację SSH (zwykle znajduje się w ~/.ssh/config
):
Host *
ProxyCommand nc %h %p %r
Oto dlaczego to działa: Nasza SSH problem nie jest problemem, ponieważ zapora nc
i telnet
praca do tego samego hosta i portu (spróbuj telnet <host> <port>
albo nc <host> <port>
: powinieneś zobaczyć coś podobnego SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.7
). Możemy to wykorzystać na naszą korzyść.
SSH pozwala na korzystanie z serwerów proxy, które pobierają standardowe dane wejściowe i wysyłają je do portu serwera za pomocą ProxyCommand
opcji. Zwykle jest to używane do tunelowania do sieci do chronionego hosta za pomocą pośredniego serwera bastionowego SSH, czasami nazywanego hostem skoku (zobacz ten link, aby uzyskać więcej informacji).
Ten Hack mówi SSH do korzystania z serwera proxy bez gospodarza Jump (ów). Tak, robi się wokół nieudanej alokacji SSH za zasobów TCP popychając wszystkich alokacji zasobów sieciowych na Netcat, która działa. SSH SSH po prostu robi swoje rzeczy bez jakichkolwiek połączeń sieciowych, a Netcat wysyła surowe dane przez połączenie TCP do serwera SSH.
UWAGA: Ponieważ ten modyfikuje ProxyCommand
dla wszystkich hostów, nie wiem jak to oddziałuje z innymi hostami SSH config że użycie ProxyCommand
. Mam kilka serwerów, z którymi mogę przetestować to i będę aktualizować tę odpowiedź z wyników. Jest szansa, że nie istnieją żadne szkodliwe skutki uboczne, ale nie mogę zagwarantować, że.
Aktualizacja # 2: Zrobiłem kilka testów z kilkoma z moich serwerów oraz pracy wydaje. SSH korzysta szczytowego wpis w config kiedy zastosować wiele wpisów. Zatem istniejący ProxyCommand
obecny powyżej tej hack, by go zastąpić. Gdy nowe polecenie SSH zostanie wykonane, ponownie odczytuje konfigurację SSH, a jeśli nie ma innej ProxyCommand
, SSH używa naszego hacka ProxyCommand
, pozwalając na zastosowanie tylko do „najbardziej zewnętrznej” sesji SSH. Słowo ostrzeżenia: jeśli umieścisz hack na górze pliku konfiguracyjnego (lub powyżej wpisu, do którego próbujesz SSH), sesje SSH, które wymagają a ProxyCommand
, zignorują drugą ProxyCommand
i zamiast tego spróbują rozwiązać adres hosta i połączyć się bezpośrednio z Netcat.