Serwer Cygwin ssh nie przyjmuje połączeń

14

Właśnie skonfigurowałem serwer SSH (OpenSSH) na komputerze z systemem Windows 7 przy użyciu programu Cygwin i próbuję połączyć się z nim za pomocą PuTTY na komputerze z systemem Windows Vista, ale nadal przekroczony limit czasu połączenia. Sprawdziłem aktywność sieciową na komputerze Win 7 z Wireshark i stwierdziłem, że odbieram TCP SYN na porcie 22 na komputerze z Win 7, ale serwer ssh nie odpowiada. Sprawdziłem numer portu, z którego korzysta sshd, sprawdziłem reguły zapory i sprawdziłem, czy mogę ssh localhost (co mogę w porządku). Absolutnie nie mam pojęcia, jak rozwiązać ten problem.

Surma
źródło
Prawdopodobnie powinieneś ponownie sprawdzić zaporę ogniową i / lub rozwinąć ten aspekt.
jjlin

Odpowiedzi:

23

Być może działa Zapora systemu Windows. Otwórz: Panel sterowania -> Zapora systemu Windows -> Zezwalaj na program lub funkcję za pomocą Zapory systemu Windows

Kliknij przycisk „Zmień ustawienia”, a następnie przycisk „Zezwól na inny program ...”. SSHD prawdopodobnie nie znajduje się na liście, która się pojawi, więc użyj przycisku „Przeglądaj ...”, aby znaleźć plik binarny i kliknij „Otwórz”, a następnie „Dodaj”. Mój był w C: \ cygwin \ usr \ sbin \ sshd.exe

Gdzieś tam możesz zdecydować, które „Typy lokalizacji sieciowych ...” chcesz użyć. Zostawiłem mój z zaznaczonym Prywatnym i niezaznaczonym publicznym. Mogę teraz zalogować się zdalnie.

Szczery
źródło
W nawiązaniu do odpowiedzi Franka , kiedy zainstalował prywatności VPN na komputerze w sieci domowej, widziałem ten sam problem. Stało się tak, ponieważ z VPN komputer łączył się teraz z sshd w sieci publicznej. Aby to naprawić, musiałem zezwolić sshd przez Zaporę systemu Windows zarówno w miejscach publicznych, jak i prywatnych.
James Hirschorn,
5

Czy twój sshd_config określa ListenAddress jako 0.0.0.0 lub 127.0.0.1 ?

Jeśli jest to wersja 0.0.0.0 lub została po prostu skomentowana, możesz połączyć się spoza komputera, tj. Z innego komputera.

Jeśli jest to 127.0.0.1 (lub jakikolwiek inny numer 127.0.0.x ), oznacza to, że nasłuchuje TYLKO na LOCALHOST i możesz zalogować się tylko z SAMEGO komputera. Urządzenia zewnętrzne są odrzucane.

lornix
źródło
2
Zostało skomentowane.
Surma,
1

Po zadziałaniu z zaporą systemu Windows bez żadnego efektu w końcu stwierdziłem, że muszę zezwolić na połączenia z moją własną podsiecią w samym Cygwin za pośrednictwem pliku /etc/hosts.allow.

Ta linia (używając mojej podsieci) jako pierwsza reguła naprawiła dla mnie problem.

WSZYSTKIE: 192.168.0.0/24: zezwól

chriswhitmore
źródło
1
Problem z hosts.allow lub hosts.deny nie spowodowałby przekroczenia limitu czasu połączenia. Spowoduje to, że serwer SSH zaakceptuje połączenie, a następnie porzuci je podczas procesu uwierzytelniania.
Kenster,
@Kenster hosts.allow i hosts.deny działa na poziomie TCP. Nie będziesz w stanie połączyć się z serwerem SSH, ponieważ zostaniesz zablokowany na warstwie 4, zanim nawet dojdziesz do serwera SSH.
mtak,
@mtak Nie, to nieprawda. hosts.allow i hosts.deny to pliki konfiguracyjne dla opakowań TCP . Program serwera (w tym przypadku sshd) musi zaakceptować połączenie TCP, uzyskać adres IP zdalnego punktu końcowego, a następnie wywołać opakowania TCP, aby sprawdzić, czy klient powinien być dozwolony. Jeśli libwrap mówi „nie”, serwer zazwyczaj przerywa połączenie.
Kenster,
Zobacz np . Sshd.c. Poszukaj LIBWRAP ifdefs. Oto funkcja hosts_access, którą wywołuje sshd. Zauważę również, że najnowsza wersja sshd.c usuwa obsługę libwrap.
Kenster,
@Kenster, mój zły, masz rację. Próbowałem go i pojawia się następujący błąd: ssh_exchange_identification: Connection closed by remote host. Dobry dzień na SU :)
mtak
1

Dla mnie problemem była nieprawidłowa własność /var/emptypliku. Problem stał się oczywisty po przełączeniu sshd w tryb debugowania za pomocą /usr/sbin/sshd.exe -D -dd. Musiałem to poprawić za pomocą:

chown [user]:[group] /var/empty

Użytkownik i grupa zostały pobrane z ls -la /varkatalogu (tylko dopasowane inne pliki). Zobacz więcej informacji tutaj: https://docs.oracle.com/cd/E24628_01/install.121/e22624/preinstall_req_cygwin_ssh.htm#EMBSC340

półmisek
źródło
Dziękujemy za zwrócenie uwagisshd -D -dd
John Oxley,
0

Upewnij się, że wygrywasz 7 Program antywirusowy nie blokuje portu 22. Ponadto przejdź do panelu usługi systemu Windows i wyszukaj CYGWINsshd i włącz go. ustaw logowanie, aby zlokalizować i zaznaczyć pole.

To rozwiąże problem: użytkownik @ mymachine ~ $ net start sshd Wystąpił błąd systemowy 1069.

Usługa nie została uruchomiona z powodu błędu logowania.

D Go
źródło