Behebung des Fehlers "Verbindung verweigert" auf Linux Port 22

Behebung des Fehlers "Verbindung verweigert" auf Linux Port 22

19:38, 09.05.2024

Artikel Inhalt
arrow

  • Bewertung der Client-Konnektivität
  • Server-Erreichbarkeitstest über Ping
  • Prüfung der Portverfügbarkeit mit Telnet
  • Prüfung der SSH-Server-Konfiguration
  • Überprüfung des Status des SSH-Dienstes
  • Statusprüfung für den SSH-Dienst
  • Firewall-Konfiguration und -Prüfung
  • ufw Firewall-Verwendung
  • iptables Firewall-Konfiguration
  •  firewalld Firewall-Konfiguration
  • SSH-Host-Verwaltung
  • Untersuchung der SSH-Logs
  • SSH-Problemanalyse
  • Schlussfolgerung

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).

views 5m, 1s
views 2
Teilen

War dieser Artikel für Sie hilfreich?

VPS beliebte Angebote

Weitere Artikel zu diesem Thema

cookie

Cookies und Datenschutz akzeptieren?

Wir verwenden Cookies, um sicherzustellen, dass wir Ihnen die beste Erfahrung auf unserer Website bieten. Wenn Sie fortfahren, ohne Ihre Einstellungen zu ändern, gehen wir davon aus, dass Sie mit dem Empfang aller Cookies auf der HostZealot-Website einverstanden sind.