Ich benutze nichthosts.allow
oder hosts.deny
, außerdem funktioniert SSH von meiner Windows-Maschine (gleicher Laptop, andere Festplatte), aber nicht von meiner Linux-Maschine.
ssh -vvv root@host -p port
gibt:
OpenSSH_6.6, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 20: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to host [host] port <port>.
debug1: Connection established.
debug1: identity file /home/torxed/.ssh/id_dsa type -1
debug1: identity file /home/torxed/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6
ssh_exchange_identification: read: Connection reset by peer
Auf dem Windows-Computer funktioniert alles einwandfrei, daher habe ich die Sicherheitsprotokolle überprüft und die Zeilen darin sind identisch. Der Server behandelt die beiden verschiedenen "Computer" nicht unterschiedlich und beide sind über die Public-Key-Authentifizierung zulässig.
Das lässt den Schluss zu, dass dies ein Problem mit meinem lokalen ArchLinux-Laptop sein muss. Aber was?
[torxed@archie ~]$ cat .ssh/known_hosts
[torxed@archie ~]$
Das ist also nicht das Problem ..
[torxed@archie ~]$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Keine Konflikte mit den Firewall-Einstellungen (vorerst).
[torxed@archie ~]$ ls -la .ssh/
total 20
drwx------ 2 torxed users 4096 Sep 3 2013 .
drwx------ 51 torxed users 4096 May 11 11:11 ..
-rw------- 1 torxed users 1679 Sep 3 2013 id_rsa
-rw-r--r-- 1 torxed users 403 Sep 3 2013 id_rsa.pub
-rw-r--r-- 1 torxed users 170 May 11 11:21 known_hosts
Die Berechtigungen scheinen in Ordnung zu sein (dieselben auf dem Server). Es wurde auch versucht, ohne /etc/ssh/ssh_config
dasselbe Ergebnis zu konfigurieren, mit Ausnahme vieler automatischer Konfigurationsvorgänge auf dem Client, bei denen derselbe Fehler auftritt.
quelle
iptables-save|grep -v '^#'
, die die anderen Tabellen enthält (zBnat
undmangle
). Wenn sie leer sind, geben Sie das einfach an. Ihreiptables
Ausgabe oben ist standardmäßig auf diefilter
Tabelle beschränkt. Führen Sie auf dem SSH-Server auch SSH auf einem alternativen Port wie diesem aus und geben Sie die Debug-Ausgabe aus.ip6tables-save
)?Antworten:
Wenn Sie "externe" Faktoren ausgeschlossen haben, können Sie diese mit den folgenden Schritten eingrenzen. Dies beantwortet Ihre Frage zwar nicht direkt, kann jedoch dazu beitragen, die Fehlerursache aufzuspüren.
Fehlerbehebung
sshd
Was ich in solchen Fällen im Allgemeinen sehr nützlich finde, ist zu starten,
sshd
ohne es dämonisieren zu lassen. Das Problem in meinem Fall war, dass weder etwas Sinnvolles gezeigtsyslog
nochauth.log
gezeigt wurde.Als ich es vom Terminal aus startete, bekam ich:
Viel besser! Mit dieser Fehlermeldung konnte ich sehen, was falsch ist, und es beheben. Keine der Protokolldateien enthielt diese Ausgabe.
Hinweis: Zumindest unter Ubuntu
$(which sshd)
ist dies die beste Methode, um diesshd
Anforderung eines absoluten Pfades zu erfüllen . Andernfalls werden Sie die folgende Fehlermeldung erhalten:sshd re-exec requires execution with an absolute path
. Die-p 10222
Markensshd
hören an diesem alternativ Port, die Konfigurationsdatei überschreiben - dies so ist , dass sie nicht mit potentiell laufen kollidiertsshd
Instanzen. Stellen Sie sicher, dass Sie hier einen freien Port auswählen.Zum Schluss: Verbinden Sie sich mit dem alternativen Port (
ssh -p 10222 user@server
).Diese Methode hat mir schon oft geholfen, Probleme zu finden, sei es bei der Authentifizierung oder bei anderen Arten. Um eine wirklich ausführliche Ausgabe zu erhalten
stdout
, verwenden Sie$(which sshd) -Ddddp 10222
(beachten Sie den Zusatzdd
, um die Ausführlichkeit zu erhöhen). Weitere Informationen zur Fehlerbehebung finden Sie unter Güteprüfungman sshd
.quelle
Sie können auch einen Host haben, dessen Arbeitsspeicher so stark fragmentiert ist, dass einer Seite kein zusammenhängender Arbeitsspeicher zugewiesen werden kann, um den Prozess für das Hosten einer SSH-Sitzung zu starten.
In einem solchen Fall können Sie eine der folgenden Meldungen erhalten:
oder:
je nachdem, wie weit der Host kommt, bevor er aussteigt.
Wenn Speicherfragmentierung die offensichtliche Ursache ist, besteht die Lösung darin, auf andere Weise auf den Server zuzugreifen und einige der relevanten Dienste neu zu starten. Ich habe festgestellt, dass Apache und MySQL die Schuld an VMs sind, da VMs keine Swap-Partition haben. Andernfalls starten Sie den Host neu.
quelle
Nur für den Fall, weil mir das passiert ist. Stellen Sie sicher, dass sshd auf dem Host ausgeführt wird!
Es ist ein dummer Fehler, könnte aber wirklich Ihr Problem sein.
quelle
sshd
nicht, würde die Verbindung nicht geschlossen, sondern abgelehnt (tryssh -p someportwithoutsshd localhost
).Ich stellte fest, dass dieser Fehler darauf zurückzuführen war, dass die SSH-Sitzungen zum Server überschritten wurden. Ich fand die Wirte, die versuchten, anzuschließen und beendete alle Lernabschnitte von allen Klienten. Das Problem wurde behoben, nachdem alle Sitzungen geklärt wurden.
quelle
who
indem die Benutzerprozesse verwendet und beendet werden.Ich bin auf das
ssh_exchange_identification: read: Connection reset by peer
Problem in einem Skript gestoßen, das 16 oder mehr ssh-Sitzungen in einer Schleife startet. sshd kann anscheinend nicht mithalten; Ein kurzer Schlaf löste mein Problem:quelle
Oder Sie haben getan, was ich gestern Abend getan habe, und / var / empty gelöscht. Anscheinend sind dieses Verzeichnis und seine Berechtigungen für das Funktionieren von sshd von wesentlicher Bedeutung, und es wird das Verzeichnis beim Neustart
/etc/init.d/sshd
nicht neu erstellen. Es wird kein Neustart fehlschlagen, und systemd wird Ihnen nicht mitteilen, warum.Ich habe das Problem gefunden, indem ich sshd im Vordergrund ausgeführt habe:
Neuaufbau der Verzeichnisse löste das Problem in meinem Fall:
Hinweis für Linux-Programmierer: Kritisch wichtige Dinge in
/var/empty
... wirklich ???quelle
ls -ld /var/empty
→ls: cannot access '/var/empty': No such file or directory
. Mindestens eine Distribution hat dies also gänzlich beseitigt. Wenn man sich das/etc/init.d/sshd
Skript ansieht, scheint es, dass zumindest unter Debian das Privilegentrennungsverzeichnis jetzt ist/var/run/sshd
und beim Start erstellt wird, wenn es noch nicht existiert.ssh_exchange_identification: Connection closed by remote host
Beim Versuch, eine Verbindung zu SSH herzustellen, ist der Fehler aufgetreten: Ich habe eine Remote-Port-Weiterleitung für den SSH-Port 22 meines lokalen Computers durchgeführt, damit ich vorübergehend von einem Remote-Server im Internet darauf zugreifen kann.In der Tat wurde der Fehler nur angezeigt , weil ich nicht daran erinnern , dass ich den SSH - Dienst beim Start deaktiviert , damit ich den SSH - Dienst auf dem lokalen Computer zu starten hatte:
sudo service ssh start
.quelle
Alles der Reihe nach; Telnet an die Host-IP-Adresse, um zu überprüfen, ob der Port 22 auf diesem Host tatsächlich empfangsbereit ist (geöffnet ist):
(Wenn nicht, können Sie ein Konsolenkabel anschließen, um sich anzumelden.)
In meinem Fall hat es nicht funktioniert und ich habe ein Konsolenkabel angeschlossen, um mich anzumelden. Nachdem ich mich angemeldet hatte, stellte ich fest, dass alle 5 VTY-Leitungen auf diesem Host (einem Cisco-Router) belegt waren.
Ich löschte alte Verbindungen, die dort hingen, um die VTY-Leitungen freizugeben, es funktionierte. Ich habe den Befehl "exec-timeout 15" unter den VTY-Zeilen hinzugefügt. Dann habe ich das Konsolenkabel entfernt.
Lektion:
Stellen Sie sicher, dass auf allen Ihren Geräten ein Timeout von 5 bis 10 Minuten eingestellt ist (falls keine Aktivität erkannt wird).
quelle
Mein Fall wurde versehentlich Socket-Proxy gesetzt (was nicht funktioniert). Ich habe genau die gleiche Ausgabe von ssh -vvv und leeres sshd-Protokoll.
quelle
Der Fehler
ssh_exchange_identification: Connection closed by remote host
kann aus unbekannten Gründen auftreten. Als ich Visual Studio Code verwendete . Der gleiche Fehler ist aufgetreten, als ich versucht habe, mit demgit pull
Befehl aus dem Remote-Repo zu ziehen .Ich habe gerade das eingebettete Terminal geschlossen und Ubuntus Terminal geöffnet und wieder gezogen. Und es war erfolgreich
quelle
Von mit
CentOS Linux release 7.4.1708 (Core)
mitOpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
hinter einer Verbindung nicht filternden Ports hatte ich:Und es stellte sich heraus, dass mein Himbeer-Pi ausgeschaltet war!
Ich dachte, dass ein nicht eingeschalteter Host den Fehler "Keine Route zum Host" ergeben hätte. Der Raspberry Pi befindet sich hinter meinem ISP-Router, daher wurde wahrscheinlich die Verbindung geschlossen.
Dann wiederholte ich das Experiment (der Versuch, eine Verbindung zu einem abgeschalteten Raspberry Pi herzustellen) von einer anderen Internetverbindung aus, die ebenfalls keine Ports mit Debian Stretch filterte,
OpenSSH_7.4p1 Debian-10+deb9u3, OpenSSL 1.0.2l 25 May 2017
und dieses Mal hatte ich folgendes erwartet:quelle