Próbuję ssh na mój zdalny serwer w systemie Linux 10. Używam MS Windows 10 Home Insider Preview kompilacja 14366.
W wierszu polecenia piszę:
ssh uż[email protected]
Kilka sekund po wpisaniu komendy ssh pojawia się następujący komunikat:
ssh: połącz z hostem domain.com port 22: zasób tymczasowo niedostępny
Z powodzeniem mogę się połączyć za pomocą Putty, a także ssh w Git Bash.
To prowadzi mnie więc do wniosku, że problem dotyczy mojego lokalnego komputera, a konkretniej podsystemu Linux. Nadal jestem bardzo zielony w środowisku Linuksa i nie jestem pewien, jak interpretować ten komunikat. Jaki zasób jest niedostępny i co powinienem zrobić, aby go udostępnić?
windows-10
bash
ssh
Kel
źródło
źródło
git
andapt-get
Odpowiedzi:
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
):Oto dlaczego to działa: Nasza SSH problem nie jest problemem, ponieważ zapora
nc
itelnet
praca do tego samego hosta i portu (spróbujtelnet <host> <port>
albonc <host> <port>
: powinieneś zobaczyć coś podobnegoSSH-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 modyfikujeProxyCommand
dla wszystkich hostów, nie wiem jak to oddziałuje z innymi hostami SSH config że użycieProxyCommand
. 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 innejProxyCommand
, SSH używa naszego hackaProxyCommand
, 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ą aProxyCommand
, zignorują drugąProxyCommand
i zamiast tego spróbują rozwiązać adres hosta i połączyć się bezpośrednio z Netcat.źródło
vi ~/.ssh/config
który otworzył pusty plik. Wkleiłem twoje polecenia, ale kiedy próbuję zapisać (esc ->: -> wq), to mówi mi"~/.ssh/config" E212: Cannot open file for writing
ls -al ~/.ssh
?Był to również problem dla mnie, okazało się, że to był mój (Symantec) zapora blokuje cały ruch internetowy z bash.
Wydaje się, że jest to ogólny problem z zewnętrznymi dostawcami zapór ogniowych, którzy nie rozpoznają tego procesu:
https://github.com/Microsoft/BashOnWindows/issues/809
Kiedy wyłączyłem zaporę, działała dobrze. Obecnie nie można znaleźć lepszego rozwiązania.
źródło
W moim przypadku wystąpił ten błąd, ponieważ aktualizacja systemu Windows spowodowała problemy z przełącznikiem Hyper-V . Okazuje się, że host, do którego próbowałem ssh, był podłączony do tego przełącznika - naprawienie go przywróciło ssh.
źródło
Na przyszłość, podczas instalacji Nginx, domyślnie zablokuje SSH z komunikatem o błędzie „Zasób tymczasowo niedostępny”, chyba że ...
źródło