Ursprünglich auf Ask Ubuntu gepostet
Wenn Sie "externe" Faktoren ausgeschlossen haben, helfen die folgenden Schritte normalerweise, sie einzugrenzen. Obwohl dies Ihre Frage nicht direkt beantwortet, kann es helfen, die Fehlerursache aufzuspüren.
Fehlerbehebung sshd
Was ich in solchen Fällen im Allgemeinen sehr nützlich finde, ist, sshd
zu starten ohne es dämonisieren zu lassen. Das Problem in meinem Fall war, dass weder syslog
noch auth.log
nichts Sinnvolles gezeigt.
Als ich es vom Terminal aus gestartet habe, bekam ich:
# $(which sshd) -Ddp 10222
/etc/ssh/sshd_config line 8: address family must be specified before ListenAddress.
Viel besser! Diese Fehlermeldung ermöglichte es mir, zu sehen, was falsch ist, und es zu beheben. Keine der Protokolldateien enthielt diese Ausgabe.
Hinweis: zumindest auf Ubuntu der $(which sshd)
ist die beste Methode, um sshd
zu erfüllen Erfordernis eines absoluten Pfades. Andernfalls erhalten Sie den folgenden Fehler:sshd re-exec requires execution with an absolute path
. Die -p 10222
macht sshd
lauschen Sie auf diesem alternativen Port und überschreiben Sie die Konfigurationsdatei - dies geschieht, damit es nicht mit möglicherweise ausgeführtem sshd
kollidiert Instanzen. Stellen Sie sicher, dass Sie hier einen freien Port auswählen.
Zum Schluss:Verbinden Sie sich mit dem alternativen Port (ssh -p 10222 [email protected]
).
Diese Methode hat mir viele Male geholfen, Probleme zu finden, seien es Authentifizierungsprobleme oder andere Arten. Um eine wirklich ausführliche Ausgabe zu stdout
zu erhalten , verwenden Sie $(which sshd) -Ddddp 10222
(beachten Sie den hinzugefügten dd
um die Ausführlichkeit zu erhöhen). Für mehr Debugging-Güte überprüfen Sie man sshd
.
Der Hauptvorteil dieser Methode besteht darin, dass Sie den sshd
überprüfen können Konfiguration ohne sshd
neu starten müssen auf dem Standardport. Normalerweise Dies sollte bestehende SSH-Verbindungen nicht stören, aber ich habe es gesehen. Auf diese Weise kann man die Konfigurationsdatei validieren, bevor man – möglicherweise – den Zugriff auf einen Remote-Server sperrt (zum Beispiel habe ich das für einige VPS und sogar für physische Server, bei denen ich extra bezahlen muss, um Out-of-Band-Zugriff zu erhalten zur Maschine).
Sie können auch einen Host haben, dessen Speicher so stark fragmentiert ist, dass er einer Seite keinen zusammenhängenden Speicher zuweisen kann, um den Prozess zum Hosten einer SSH-Sitzung zu forken.
In einem solchen Fall können Sie eine der folgenden Meldungen erhalten:
ssh_exchange_identification: read: Connection reset by peer
oder:
Connection closed by aaa.bbb.ccc.ddd
abhängig davon, wie weit der Host kommt, bevor er aussteigt.
Wenn die 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 Schuldigen auf VMs sind, da VMs keine Swap-Partition haben. Andernfalls starten Sie den Host neu.
Nur für den Fall, denn das ist mir passiert. Stellen Sie sicher, dass sshd auf dem Host ausgeführt wird!
Es ist ein dummer Fehler, aber es könnte wirklich Ihr Problem sein.