Behebung des Fehlers "Verbindung verweigert" auf Linux Port 22
19:38, 09.05.2024
Die Serveradministration auf einem Linux-System ist nicht immer ein fehlerfreier Prozess, von Zeit zu Zeit kann es zu Problemen und Fehlern kommen. Hier werden wir unsere praktischen Erfahrungen mit dem Fehler "connection refused" teilen. Wenn ein solches Problem auftritt, bedeutet das, dass die Verbindung über das SSH-Protokoll nicht hergestellt werden kann und Sie sollten besser einige der professionellen Empfehlungen befolgen, um dieses Problem mit einem methodischen Ansatz zu lösen.
Bewertung der Client-Konnektivität
Um dieses Problem zu lösen, sollten zunächst einige Tests auf der Client-Seite durchgeführt werden. Zu diesem Zweck werden wir die Nutzung von telnet und ping im Detail vorstellen.
Server-Erreichbarkeitstest über Ping
Das erste, was zu Testzwecken gemacht werden kann, ist die Verwendung von Ping und IP oder Hostname, um festzustellen, ob der Server erreicht werden kann. So kann man es machen:
$ ping 11.321.44.2
IWenn der sServer erreichbar ist, erhalten Sie einige zusätzliche Informationen und auch eine Ping-Statistik. Falls jedoch keine Antwort auf diesen Befehl erfolgt, ist das keine 100-prozentige Garantie dafür, dass der Server unerreichbar ist.
Prüfung der Portverfügbarkeit mit Telnet
Eine weitere gute Möglichkeit ist die Überprüfung der Portverfügbarkeit mit dem Befehl telnet, der eine textbasierte Verbindung verwendet. Verwenden wir also den nächsten Befehl, um den Standard-SSH-Port zu testen:
$ telnet 11.321.44.2 22
Wenn die Verbindung erfolgreich hergestellt wurde, werden Sie Informationen über das Betriebssystem und die SSH-Server-Software erhalten. Wenn der Versuch nicht zustande kommt und Sie solche Daten nicht erhalten, bedeutet das nicht, dass der Server unerreichbar ist.
Prüfung der SSH-Server-Konfiguration
Lassen Sie uns nun überprüfen, ob der SSH-Port richtig funktioniert, indem wir die Serverkonfiguration mit Hilfe von überprüfen:
$ grep Port /etc/ssh/sshd_config
Port 2222
Hier verwenden wir nicht den Standard-Port 22. Dann verwenden Sie die folgende Zeile:
$ ssh -p 2222 benutzer_name@ihreserverip
Dieser Port kann leicht in den Standardport geändert werden, indem man ihn mit
$ grep Port /etc/ssh/sshd_config
Anschluss 22
Danach sollten Sie nur noch den Neustart mit systemctl durchführen. Danach kann die Verbindung über einen Standard-Port hergestellt werden:
$ sudo systemctl restart sshd
Überprüfung des Status des SSH-Dienstes
Der nächste Schritt in unserem Verfahren ist eine Überprüfung des SSH-Dienstes und eine Überprüfung des Installationsstatus.
Statusprüfung für den SSH-Dienst
Die Statusüberprüfung ist einfach und sollte die folgende Zeile enthalten:
$ systemctl status ssh
Die Ausgabe in dieser Zeile sollte alle Details über Prozessdaten, den aktuellen Status, Protokollereignisse und auch die Konfiguration enthalten. Wenn Sie keine so detaillierte Ausgabe haben und der Server nicht läuft, dann können Sie den nächsten Befehl verwenden:
$ sudo systemctl start sshd
Darüber hinaus kann es erforderlich sein, den SSH-Dienst zu aktivieren:
$ sudo systemctl enable sshd
Am Ende sollten Sie einen Neustart durchführen, und Sie können versuchen, den Status noch einmal zu überprüfen.
Firewall-Konfiguration und -Prüfung
Eine weitere Erklärung für diesen Fehler kann mit der Firewall-Blockade verbunden sein. Deshalb müssen wir das Tool angeben, das unseren Zugang zum System kontrolliert.
ufw Firewall-Verwendung
Um zu überprüfen, ob der SSH-Verkehr nicht blockiert wird, verwenden Sie den folgenden Befehl:
$ sudo ufw status
In der Ausgabe sehen Sie, ob der Datenverkehr erlaubt ist und woher er kommt. Wenn Sie diese Informationen nicht sehen können, versuchen Sie zunächst, den Standard-Port zu öffnen, indem Sie
$ sudo ufw allow 22
Führen Sie dann einen Reload durch und versuchen Sie es erneut:
$ sudo ufw reload
iptables Firewall-Konfiguration
Der nächste Schritt in diesem Prozess ist die Überprüfung der iptables Regeln:
$ sudo iptables -n -L | grep 22
Mit diesem Befehl können Sie Regeln überprüfen, die bestimmten Verkehr auf Port 22 zulassen. Wenn Sie keinen eingehenden Verkehr in der Ausgabe haben, können Sie dies mit Hilfe von ändern:
$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Lassen Sie uns nun die oben erwähnte Zeile erklären, damit Sie den Vorgang besser verstehen können:
- 22 - dieser Teil bestimmt den Port.
- -p tcp - hier wird das benötigte Protokoll angegeben; in diesem Fall ist es TCP.
- -j ACCEPT - bedeutet, dass Verkehr, der dieser Regel entspricht, akzeptiert werden muss.
Der nächste Schritt wird die Installation von iptables-persistent sein, dies sollte getan werden, um sie nach dem Neustart persistent zu machen:
$ sudo apt-get install iptables-persistent
Während des Prozesses werden Sie aufgefordert, die aktuellen Regeln zu speichern.
firewalld Firewall-Konfiguration
Wir verwenden den folgenden Befehl, um zu prüfen, ob der SSH-Port offen ist. Dies sollte geschehen, wenn firewalld unter Linux funktioniert:
$ sudo firewall-cmd --list-ports
Es kann vorkommen, dass dieser Port nicht in der Liste enthalten ist, dann können Sie ihn mit der Zeile zulassen:
$ sudo firewall-cmd --permanent --add-port=22/tcp
Durch die Verwendung dieses Befehls fügen Sie Port 22 zur permanenten Konfiguration hinzu. Führen Sie nach diesem Schritt einen Reload durch:
$ sudo firewall-cmd --reload
SSH-Host-Verwaltung
Versuchen wir nun, die Probleme zu lösen, die mit den Hostschlüsseln verbunden sein könnten. Wir können das Problem lösen, indem wir die Datei leeren:
$ cp ~/.ssh/known_hosts ~/.ssh/known_hosts.bak && echo > ~/.ssh/known_hosts
Untersuchung der SSH-Logs
Eine weitere Methode, um den Fehler zu beheben, ist die Überprüfung der SSH-Logs auf mögliche Probleme. Um die neuesten Protokolle zu überprüfen, verwenden Sie tail und -f, um die neuen Einträge zu überprüfen:
$ tail -f /var/log/auth.log
Sie können auch /var/log/secure ausprobieren, falls der Speicherort im Beispielbefehl nicht funktioniert hat. Dies sind 2 typische Optionen, aber es gibt auch einen anderen Weg.
SSH-Problemanalyse
Wenn keine der oben genannten Varianten in Ihrem Fall funktioniert hat, können wir Ihnen eine weitere Möglichkeit anbieten:
$ ssh -v asr@177.155.233.156
Anhand der Ausgabe können Sie die Probleme der SSH-Verbindung ermitteln.
Schlussfolgerung
Hier haben wir mit Ihnen einige praktische Empfehlungen über den SSH-Fehler im Linux-System geteilt. Wir haben versucht, die gängigsten Strategien für die grundlegendsten Konnektivitätsprobleme zu nennen. Beginnen Sie mit der Überprüfung der SSH-Konfiguration, testen Sie dann die Firewall-Einstellungen, und natürlich können Sie auch die SSH-Problemanalyse verwenden. Wenn Sie die einfachste Vorgehensweise befolgen, erhalten Sie eine sichere SSH-Verbindung auf Ihrem Betriebssystem (in unserem Fall Linux).