Jak naprawić błąd „ssh_exchange_identification: read: Connection reset by peer”?


21

Nie mogę połączyć się z moim serwerem za pośrednictwem ssh przy użyciu komputera, ale mogę połączyć się z tym serwerem za pomocą telefonu komórkowego za pomocą aplikacji termius. Sprawdziłem /etc/hosts.allowi /etc/hosts.denymoje iptables i przeszukałem google, wydaje się, że nie ma odpowiedzi na ten problem. Nie wiem jak to rozwiązać, oto ssh -v 183.17.228.80wyjście

debug1: Connecting to 183.17.228.80 [183.17.228.80] port 22.
debug1: Connection established.=======================   
debug1: permanently_set_uid: 0/0   
debug1: SELinux support disabled  
debug1: key_load_public: No such file or directory    
debug1: identity file /root/.ssh/id_rsa type -1    
debug1: key_load_public: No such file or directory   
debug1: identity file /root/.ssh/id_rsa-cert type -1      
debug1: key_load_public: No such file or directory   
debug1: identity file /root/.ssh/id_dsa type -1   
debug1: key_load_public: No such file or directory   
debug1: identity file /root/.ssh/id_dsa-cert type -1   
debug1: key_load_public: No such file or directory   
debug1: identity file /root/.ssh/id_ecdsa type -1  
debug1: key_load_public: No such file or directory   
debug1: identity file /root/.ssh/id_ecdsa-cert type -1   
debug1: key_load_public: No such file or directory  
debug1: identity file /root/.ssh/id_ed25519 type -1   
debug1: key_load_public: No such file or directory  
debug1: identity file /root/.ssh/id_ed25519-cert type -1  
debug1: Enabling compatibility mode for protocol 2.0  
debug1: Local version string SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.2   
ssh_exchange_identification: read: Connection reset by peer

Mogę pingować ten serwer, tutaj jest telnet

telnet 183.17.228.29 22  
Trying 183.17.228.29...  
Connected to 183.17.228.29.  
Escape character is '^]'.                                                                 
Connection closed by foreign host.

Może chcesz sprawdzić, czy masz zainstalowane DenyHosts, DenyHosts ma własne zezwolenie i odmawia plików hostów.
Robby1212,

czy jesteś pewien, że oprogramowanie uruchomione na komputerze jest kompatybilne ze wszystkimi trybami szyfrowania SSH?
Tharaka Devinda

jak wspomniałem, sprawdziłem pliki hostów, nie dla
DenyHosts

Nie jestem pewien, może algorytm szyfrowania był inny, ale mój klient był kitu .... ale mogę ssh do tego samego serwera przez terminal na IOS
3054879

Ze ścieżki kluczowych plików przypuszczam, że łączysz się jako root. Zwykle nie jest włączone; spójrz na swoją konfigurację sshd. ssh -vvvmoże dać ci więcej informacji.
Ridgy

Odpowiedzi:


14

Po prostu uruchom ponownie serwer, który chcesz ssh. To zadziałało, wcześniej miałem ten sam problem.


1
Nie można znaleźć głównej przyczyny, ale ponowne uruchomienie działało dla mnie.
Raghavendra N

2
Napotkałem ten sam problem, gdy ssh na moim darmowym serwerze w AWS. Jest to spowodowane wyczerpaniem pamięci przez serwer. Reboot działa.
Leon

@ thistleknot, ponowne uruchomienie działa dla mnie i jest łatwym, szybkim rozwiązaniem. Nie ma w tym nic okropnego. Rzeczywiście nie wiem, co spowodowało problem, ale ponowne uruchomienie naprawiło coś.
CousinCocaine

Jeśli ponowne uruchomienie działało, prawdopodobnie nie był to problem z konfiguracją, ale problem z zasobami. Być może zwiększenie priorytetu ssh mogło załatwić sprawę.
JohnRos

1
restart serwera to bardzo zła sugestia.
Hossein Vatani

8

To tak naprawdę oznacza, że ​​twój adres IP znajduje się na czarnej liście serwera. Spróbuj dodać adres IP do białej listy, aby móc się zalogować. Możesz spojrzeć na listę / etc / hosts, aby sprawdzić, czy adres IP twojego serwera się zmienił.


9
Tak naprawdę niekoniecznie tak jest.
sempaiscuba,

2
To wydawało mi się prawdą. Dowiedziałem się, że mój serwer Cloudways znalazł się na czarnej liście mojego domowego adresu IP i musiałem ręcznie dodać go do białej listy.
Ryan

Problem zniknął po kilku godzinach, nie wiem dlaczego, ale nie musiałem restartować.
Salem F,

Dzięki za komentarz dotyczący: „Serwer Cloudways znalazł się na czarnej liście mojego domowego adresu IP” - tak się właśnie stało - ręcznie dodany do białej listy i wszystko gotowe.
Jules Matthews,

2

Sposób, w jaki rozwiązałem problem, to poszedłem do komputera-hosta i uruchomiłem kilka poleceń.

sudo mkdir /var/run/sshd
sudo chmod 755 -R /var/run/sshd
sudo service ssh restart

Potem połączyłem się z maszyną.


1

Powyższy błąd występuje, gdy masz limit nieudanych prób uwierzytelnienia na serwerze i masz zbyt wiele kluczy ssh na swoim kliencie (więcej niż wartość MaxAuthTries)

Możesz spróbować zwiększyć wartość MaxAuthTries i zrestartować demona sshd. Możesz też ograniczyć liczbę kluczy w swoim ~/.sshkatalogu i użyć podkatalogów i ~/.ssh/configpliku, aby zdefiniować klucz dla hosta / grupy hostów


Próbowałem tego, ale nie powiodło się, w rzeczywistości prawie wypróbowałem każdą metodę, którą mogę znaleźć w Internecie, chyba kluczem był algorytm negowania negocjacji szyfrowania, ale nie wiem, jak to naprawić
user3054879

2
co próbowałeś? zaktualizuj swoje pytanie
Romeo Ninov

1

Zdarzyło się tak samo i potrzebowałem ssh -v 'ip addr', a potem zobaczyłem, że muszę zaakceptować certyfikat. Może być również listą blokującą ACL lub regułą trasy: przykład -

Klient Putty ma adres 10.xxx z zaporami ogniowymi blokującymi komunikację sieci firmowej z hostami DMZ, ale twój telefon komórkowy pod adresem 58.xxx, niezależnie od publicznego adresu IP, może rozmawiać z hostem DMZ, do którego próbujesz się dostać.

więc spojrzałbym na informacje ssh -v, gdy spróbujesz połączyć się ponownie, sprawdzę, czy możesz zebrać jakieś informacje, a następnie sprawdzę, czy istnieją reguły uniemożliwiające dostęp do serwera na poziomie zapory lub routera, a nie na poziomie plik denyhosts na samym serwerze.


0

Korzystam z komórkowego punktu dostępowego, aby łączyć się z internetem, kiedy pracowałem, konsola zamarła i nie mogłem się już ssh_exchange_identification: read: Connection reset by peer

Próbowałem zresetować SRV, ale to nie pomogło

Dopiero po zmianie połączenia sieciowego (na hotspot w innej komórce) mogę się połączyć ponownie.

UWAGA: Nadal mogę używać starego połączenia do łączenia się z SRV na innym AWS, co dziwne ...


0

Aby rozwiązać problem, wykonaj następujące czynności:

  1. Uruchom ponownie serwer z terminala online serwera.

Jeśli to nie działa,

  1. Edytuj plik $HOME/.ssh/known_hosts
  2. Usuń wszelką zawartość w tym pliku, gdy ponownie połączy się on z dowolnym serwerem, który ssh, musisz ponownie zaakceptować połączenia.

1
-1 do całkowitego usunięcia known_hosts. Lepiej byłoby edytować tego konkretnego hosta, o którym mowa (chociaż wątpię, że to tutaj pomoże).
David Foerster


0

Może być wiele przyczyn, ale jedną z najbardziej prawdopodobnych przyczyn może być (w moim przypadku było), że ssh / port 22 nie jest dozwolony przez firewall .

Możesz zezwolić na połączenie ssh przez interfejs użytkownika (niektórzy dostawcy to dopuszczają) lub Jeśli masz inną metodę logowania (np. Digitalocean zapewnia przycisk konsoli), możesz uruchomić poniżej polecenia

sudo ufw allow ssh
sudo ufw allow 22

0

Wygląda na to, że demon ssh na serwerze jest zawieszony. Czy na pewno działa? Kiedy telnet do ssh, musisz zobaczyć podpis. Coś jak:

telnet unixhow.com 22
Trying 35.228.26.20...
Connected to unixhow.com.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.1

Widzę z twoich danych wyjściowych, że demon ssh nie odpowiada po stronie serwera. Zalecam połączenie za pomocą protokołu IP-KVM (lub w inny sposób) ze zdalną maszyną i zrestartowanie sshd.


0

Może to być spowodowane tym, że na Ubuntu nie ma serwera openssh. Możesz uruchomić poniższe polecenie, aby sprawdzić status serwera openssh.

ubuntu@ubuntu:~$ sudo systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-03-20 11:52:16 GMT; 5min ago
  Process: 1034 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
 Main PID: 1058 (sshd)
    Tasks: 1
   Memory: 5.1M
      CPU: 122ms
   CGroup: /system.slice/ssh.service
           └─1058 /usr/sbin/sshd -D

Mar 20 11:52:15 ubuntu systemd[1]: Starting OpenBSD Secure Shell server...
Mar 20 11:52:16 ubuntu sshd[1058]: Server listening on 0.0.0.0 port 22.
Mar 20 11:52:16 ubuntu sshd[1058]: Server listening on :: port 22.
Mar 20 11:52:16 ubuntu systemd[1]: Started OpenBSD Secure Shell server.
Mar 20 11:52:24 ubuntu sshd[1131]: Connection closed by 10.0.2.2 port 60566 [preauth]
Mar 20 11:53:59 ubuntu sshd[1135]: Accepted password for ubuntu from 10.0.2.2 port 60654 ssh2
Mar 20 11:53:59 ubuntu sshd[1135]: pam_unix(sshd:session): session opened for user ubuntu by (uid=0)
Mar 20 11:57:48 ubuntu sshd[1238]: Accepted password for ubuntu from 10.0.2.2 port 61124 ssh2
Mar 20 11:57:48 ubuntu sshd[1238]: pam_unix(sshd:session): session opened for user ubuntu by (uid=0)

Jeśli status nie jest active (running), możesz chcieć zainstalować i / lub uruchomić serwer openssh. Możesz to zrobić za pomocą poniższych poleceń.

sudo apt update
sudo apt install openssh-server

0

Miałem ten sam problem, ale po ponownym uruchomieniu demona sshd mogłem połączyć się z hostem.

sudo systemctl restart sshd && systemctl status sshd

Jest to tylko tymczasowe obejście, dopóki nie zwiększysz parametru MaxAuthTries.


0

Moim rozwiązaniem jest dodanie mojego lokalnego adresu IP do /etc/hosts.allow:

sshd:192.168.10.88:allow

to działa dla mnie.


-2
  1. Sprawdź, czy sshd jest zainstalowany i uruchomiony na serwerze.
  2. Upewnij się, że demon jest zainstalowany i uruchomiony. Musisz mieć możliwość „man sshd”. Myślę, że pakiet, w którym się znajduje, jest open-ssl i będziesz musiał uruchomić demona (i zatrzymać go, gdy go nie potrzebujesz).

oczywiście, że zainstalowałem sshd, jak już wspomniałem, mogę ssh na tym samym serwerze przez terminal na
iPhonie
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.