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.