Dlaczego pojawia się błąd „Port 22: odmowa połączenia”?


70

Dostaję

port 22: Connection refused 

błąd podczas łączenia z serwerem.

Mam zainstalowanego klienta i serwer openssh i są uruchomione. Ale nadal występuje błąd. Proszę pomóż.


2
Dla wyjaśnienia, czy serwer openssh jest zainstalowany na serwerze?
Kevin,

Sprawdź, czy ssh działa na porcie 22 i czy masz regułę zapory blokującą port.
Manula Waidyanatha

1
Według mnie, skonfiguruj zaporę ogniową tak, aby zezwoliła na ssh (port 22), który jest obecnie blokowany przez zaporę ogniową.
Ketan Patel,


Może to nastąpić prawdopodobnie z powodu tymczasowej utraty sieci. Sprawdź swoje połączenie internetowe.
user648610,

Odpowiedzi:


78

Przejrzałem ten problem i w końcu uzyskałem odpowiednią odpowiedź.

sudo apt-get update
sudo apt-get install openssh-server
sudo ufw allow 22

Następnie wszedł do raspi-configokna terminala i włączył ssh.

Umożliwi to użycie portu 22 dla sshd.


Ten sam problem tutaj jak @SDsolar
Nadav B

@Nadiv, musiałem także użyć raspi-config, aby włączyć ssh. Odpowiedź została zredagowana, aby to odzwierciedlić.
SDsolar

Wykonałem pierwsze trzy wiersze na obu komputerach i plik został teraz pomyślnie przesłany. Dlaczego Ubuntu nie ma domyślnie zainstalowanych / włączonych? connection refusedBłąd jest tak tajemnicze, nie miałem pojęcia, czy to był problem zapory kwestie, nazwa użytkownika, adres IP emisji, itp itd bardzo frustrujące.
Hatefiend,

sudo ufw allow 22pracował raz. Znów pojawił się błąd.
vineeshvs

32

Na serwerze sprawdź, czy sshd faktycznie działa i nasłuchuje na porcie 22:

$ sudo netstat -anp | grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1538/sshd       
tcp6       0      0 :::22                   :::*                    LISTEN      1538/sshd       

Jeśli nie otrzymujesz wyników lub nie pokazują, że słuchasz na komputerze 0.0.0.0:22 ... napraw to.

Jeśli pokażesz, że sshd działa i nasłuchuje na porcie tcp 22, sprawdź, czy żadna reguła zapory nie przeszkadza. Ponownie na serwerze:

$ sudo iptables -L | grep ssh
DROP       tcp  --  anywhere             anywhere            tcp dpt:ssh 

Lub na przemian

$ sudo ufw verbose
Status: active

To                         Action      From
--                         ------      ----
22                         DENY        Anywhere
22/tcp                     DENY        Anywhere

Jeśli zobaczysz regułę taką jak jedna z powyższych, musisz ją naprawić.

Jeśli nie widzisz żadnych reguł zapory sieciowej i widzisz usługę działającą na serwerze, czas sprawdzić stację roboczą i sieć, z którą jest ona połączona. Czy możesz połączyć się z innymi serwerami? Czy możesz pingować własny interfejs lub adres zwrotny? Itp.


1
a jeśli możesz połączyć się z innymi serwerami?
opensourcechris

2
Hej, dziękuję za odpowiedź, mój to nie port 22, to 2222. Powiedziałeś, napraw to, ale jak?
Yogesh Darji,

Mój nie dał żadnych wyników.
SDsolar

napraw to za pomocą: sudo ufw allow 22(lub cokolwiek to jest twój port)
John D

netstat jest przestarzały (i nie jest instalowany domyślnie w nowszych wersjach Ubuntu - nie znaleziono polecenia „netstat”, ale można go zainstalować z ... ). Być może aktualizacja dla iproute2 ?
Peter Mortensen

14

Spróbuj tego

sudo apt-get remove openssh-client openssh-server

i wtedy

sudo apt-get install openssh-client openssh-server

zadziałało dla mnie :)

Prawdopodobnie nie najbardziej ortodoksyjne rozwiązanie ... :)


3
Użycie dpkg-rekonfiguracji byłoby łatwiejsze w użyciu zamiast rozwiązania odinstalowywania / ponownej instalacji
Stephen Michael Kellat

1
Musiałem użyć apt-get purge openssh-server (zamiast usunąć), aby go uruchomić.
11101101b

6

Ten sam problem wystąpił po zainstalowaniu Raspbian. Rozwiązanie, które działało dla mnie:

sudo apt-get purge openssh-server
sudo apt-get install openssh-server

Jeśli to zadziałało, musisz wcześniej zmienić konfigurację sshd-config.
guntbert,

Edytowałem sshd_config na Raspbian podczas próby instalacji ssh. To rozwiązanie działało dla mnie.
Scott,

+1. Jedyne rozwiązanie, które zadziałało!
Nadav B

1

Następujące polecenia działały dla mnie:

cd /root/.ssh
vi known_hosts

Teraz usuń wszystko z tego pliku i wpisz na terminalu:

service sshd restart

Źródło: SSH - odmowa połączenia


Podobny problem dla mnie, ale zdaje mi known_hosts z ssh-keygen -f "/home/MYUSER/.ssh/known_hosts" -R MYHOSTzastępując w moim użytkownikiem Linuksa i zdalnego hosta starałem się połączyć
Chris

1

To również może to naprawić dla ciebie. Spróbuj przekierować połączenie 22 z wychodzącego adresu IP na lokalny adres IP na tym samym porcie. Pracował dla mnie, pozwalając mi na ssh do zdalnego komputera z Ubuntu.


0

W moim przypadku statyczny adres IP był nieprawidłowy. Dowiedz się, wykonując ping <my_ip>po zmianie serwera. Nadal pingował, nawet gdy serwer był wyłączony. Zmiana adresu IP rozwiązała problem.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.