Dlaczego wszystkie moje próby SSH kończą się niepowodzeniem z powodu przekroczenia limitu czasu?

22

Jestem nowy w używaniu ssh i powiązanych technologii, więc jest bardzo możliwe, że nie rozumiem czegoś podstawowego. (Może to być również pytanie o awarię serwera ... nie jestem pewien.)

Próbuję ssh na serwerze sieciowym (którego jestem właścicielem) i połączenie nigdy nie jest ustanawiane z powodu przekroczenia limitu czasu.

~ $ ssh -vvv DOMAIN.com
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/USER/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 102: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to DOMAIN.com [123.45.67.89] port 22.
debug1: connect to address IPADD port 22: Operation timed out
ssh: connect to host DOMAIN.com port 22: Operation timed out

Moją pierwszą myślą było to, że jakoś źle określiłem domenę lub że coś jest nie tak z moją witryną. Więc próbowałem połączyć się z tą samą domeną przez FTP i to działało dobrze (został poproszony o nazwę użytkownika):

~ $ ftp
ftp> open
(to) DOMAIN.com
Connected to DOMAIN.com.
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 2 of 50 allowed.
220-Local time is now 12:47. Server port: 21.
220-This is a private system - No anonymous login
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 15 minutes of inactivity.
Name (DOMAIN.com:USER):

Więc pomyślałem, że może źle wykorzystałem SSH. Zacząłem oglądać ten film instruktażowy . Po około 1 minucie robi ssh [email protected]i wyświetla monit o nazwę użytkownika, ale daje mi to ten sam limit czasu, co powyżej. Potem spróbowałem, ssh google.comco robi to samo. ssh localhostz drugiej strony działa dobrze. Problem wydaje się więc mieć związek z żądaniami SSH przesyłanymi przez sieć.

Moją kolejną myślą było to, że może to być problem zapory ogniowej. Mam Sophos zainstalowany na tym komputerze, ale według mojego administratora „nie powinien” blokować wychodzących żądań SSH.

Czy ktoś może pomóc dowiedzieć się, dlaczego tak się dzieje?

exp1orer
źródło
8
To jest aktualny adres IP, który nam podajesz. Ma na nim uruchomione niezabezpieczone połączenie FTP. To może nie być dobry pomysł. Nie ma też nic uruchomionego na porcie 22, co, jak podejrzewam, jest źródłem twoich problemów. Nie możesz po prostu ssh do niczego, serwer musi mieć uruchomiony sshd, ten chyba nie. Jeśli to twój serwer, włącz ssh i wyłącz ftp. Możesz uruchomić ftp przez ssh, gdy jest uruchomiony.
marinus,
3
Nie trzeba usuwać. Zedytowałem adres IP i poprosiłem SE o wyczyszczenie historii edycji. W ten sposób osoba, która odpowiedziała, nie traci reputacji.
terdon

Odpowiedzi:

24

Ten komunikat o błędzie oznacza, że ​​serwer, z którym się łączysz, nie odpowiada na próby połączenia SSH na porcie 22. Istnieją trzy możliwe przyczyny:

  1. Na komputerze nie działa serwer SSH. Musisz go zainstalować, aby móc do niego ssh.
  2. Na tym komputerze działa serwer SSH, ale na niestandardowym porcie. Musisz dowiedzieć się, na którym porcie jest uruchomiony; powiedzmy, że jest na porcie 2222, a następnie uruchom ssh -p 2222 hostname.
  3. Na tym komputerze działa serwer SSH i korzysta on z portu, na którym próbujesz się połączyć, ale komputer ma zaporę ogniową, która nie pozwala ci się z nim połączyć. Musisz wymyślić, jak zmienić zaporę ogniową, a może musisz ssh z innego hosta, aby uzyskać pozwolenie.

EDYCJA : jak (słusznie) wskazano w komentarzach, trzeci z pewnością ma miejsce; pozostałe dwa spowodowałyby, że serwer odesłałby pakiet TCP „reset” z powrotem przy próbie połączenia klienta, co spowodowałoby komunikat o błędzie „odmowa połączenia”, a nie przekroczenie limitu czasu. Inne dwa również mogą tak być, ale najpierw musisz naprawić trzeci, aby móc przejść dalej.

Wouter Verhelst
źródło
6
Gdyby nie był zainstalowany lub działał na innym porcie, otrzymywałby wiadomości o odmowie połączenia.
Hut8
2
@ Hut8: Ma rację. Z 3 możliwości tylko trzecia (zapora ogniowa) może doprowadzić do przekroczenia limitu czasu.
R ..
W systemie Ubuntu: sudo ufw pozwalają 22; wykonuj więc swoją pracę; sudo ufw zaprzeczyć 22. digitalocean.com/community/tutorials/...
Daniel
Myślę, że istnieje czwarta możliwość, która polega na tym, że serwer jest niedostępny (problemy z routingiem internetowym, coś pomiędzy ...) Nawet jeśli możesz uzyskać dostęp do innych usług, ponieważ wybrana trasa może się różnić dla sshinnych usług.
Alexis Wilke,
3

Sprawdź za pomocą polecenia telnet, czy możesz połączyć się z portem SSH 22. Jeśli nie możesz się połączyć, sprawdź go. Najpierw powinieneś być w stanie połączyć się na porcie nr. 22 do serwera.

Domyślnie port SSH to 22. Ale jeśli skonfigurowałeś inny port, użyj tego portu zamiast 22.

telnet <ip / url serwera> <port>

np. telnet domain.com 22

AV J
źródło
2
To skończy się tak samo (w przeciwnym razie ssh -vdziennik pokazałby, że połączenie się powiodło, zamiast mówić, że
upłynął limit
@Wouter Verhelst tak, dziękuję za wyjaśnienia
AVJ
Jak sprawdzić, który port jest skonfigurowany? Skonfigurować nowy port?
Yonatan Simson
@YonatanSimson, zakładając, że masz dostęp, możesz użyć sudo netstat -a64np( netstat) i wyszukać sshdserwer (ostatnia kolumna). Jeśli nie masz dostępu, możesz spróbować nmap.
Alexis Wilke,