Wie behebe ich den SSH-Fehler „Connection refused“?
Dieses Tutorial behandelt die folgenden Themen:
Der SSH-Fehler „Connection refused“ tritt auf, wenn Sie versuchen, eine Verbindung zu einem SSH-Server (Secure Socket Shell) herzustellen, aber die Verbindung schlägt fehl.
SSH ist ein Netzwerkprotokoll, mit dem Sie zahlreiche Aufgaben über eine verschlüsselte und sichere Verbindung ausführen können. Wie FTP, können Sie es verwenden, um Dateien hochzuladen, herunterzuladen oder zu bearbeiten.
Durch SSH sind Sie jedoch in der Lage, viel fortgeschrittenere Aufgaben auszuführen. Sie können verschiedene Skripte und Befehle direkt auf dem Server über eine Befehlszeilenschnittstelle ausführen. Weitere Informationen finden Sie in diesem ausführlichen SSH-Leitfaden.
Sie werden diesen Fehler in Ihrem Browser nicht auftreten, während Sie Websites besuchen. Die SSH-Verbindung wird zwischen einem auf Ihrem Computer installierten SSH-Client und einem auf einem Webhosting-Server installierten SSH-Serverprogramm (auch Daemon genannt) hergestellt. Daher ist die häufigste Stelle, an der Sie diesen Fehler sehen, in einem SSH-Client-Programm.
Unten sehen Sie ein Beispiel für den Fehler „SSH port 22 Connection refused“ im Terminal auf einem Mac-Computer.
In ähnlicher Weise wird der Fehler in Terminal angezeigt, wenn Sie ein Linux-Benutzer sind. Das folgende Beispiel stammt von einem Linux/CentOS Betriebssystem.
Windows-Benutzer werden den Fehler normalerweise auf dem beliebten SSH-Client PuTTY sehen. PuTTY kann eine andere Variante des Fehlers anzeigen – “Connection timed out”.
Was sind die Gründe für den Fehler „Connection Refused“ in SSH und wie kann man sie beheben?
Obwohl die Fehlermeldung selbst nicht ganz aufschlussreich über das Problem ist, gibt es ein paar häufige Ursachen. Wir werden jeden Fall und seine Lösung durchgehen.
Auf Ihrem lokalen Computer ist kein SSH-Client installiert
Um eine SSH-Verbindung herzustellen, muss Ihr Computer über ein Programm namens SSH-Client verfügen. Es ermöglicht Ihnen, mit einem entfernten Server zu kommunizieren und SSH-Befehle auszuführen. Wenn das Programm fehlt, sehen Sie den SSH-Fehler „Connection refused“.
Eine einfache Möglichkeit, um festzustellen, ob auf Ihrem Computer SSH installiert ist, ist, den folgenden Befehl im Terminal auszuführen.
$ ssh
Wenn SSH installiert ist, wird die Antwort auf dem Terminal eine Liste der verfügbaren Befehle sein. Andernfalls lautet die Ausgabe „command not found“.
Mac-Benutzer müssen keinen SSH-Client installieren. Alle modernen macOS-Versionen haben ein vorinstalliertes SSH-Paket, und Sie können es über das Terminal-Tool ausführen.
Unter Linux können Sie SSH auch vom Terminal aus ausführen. Es gibt jedoch keinen standardmäßig integrierten SSH-Client, sodass Sie ihn zusätzlich installieren müssen.
Abhängig von Ihrer Distribution können Sie das OpenSSH-Paket für Linux OS installieren, indem Sie die spezifischen Befehle in Terminal ausführen.
Um OpenSSH in der Ubuntu/Debian-Distribution zu installieren, führen Sie den folgenden Befehl aus.
$ sudo apt install openssh-client
Für CentOS/RHEL-Distributionen verwenden Sie diesen Befehl.
$ sudo yum install openssh-clients
Windows hat auch keinen SSH-Client standardmäßig, also müssen Sie ihn selbst installieren.
In älteren Windows-Versionen wird OpenSSH nicht direkt unterstützt. Daher müssen Sie ein Client-Programm installieren, mit dem Sie eine SSH-Verbindung herstellen können. Das bekannteste ist PuTTY. Für detaillierte Anweisungen, lesen Sie diese Anleitung zur Installation und Verwendung von PuTTY.
Ab Windows 10 (build 1809) benötigen Sie keinen dedizierten Client für den SSH-Zugriff. Sie können OpenSSH in der Command Prompt oder PowerShell installieren und ausführen. Detaillierte Anweisungen finden Sie in der offiziellen Dokumentation zur Installation von OpenSSH unter Windows.
Auf Ihrem Webhosting-Server ist kein SSH-Daemon installiert
Einen SSH-Client auf Ihrem lokalen Computer zu haben, ist eine wichtige Voraussetzung für eine SSH-Verbindung. Auf dem Hosting-Server Ihrer Website muss jedoch auch ein SSH-Serverprogramm installiert sein. Er heißt SSH-Daemon und dient der Überwachung und Autorisierung von SSH-Verbindungen.
Wenn Sie versuchen, eine Verbindung zu einem Server aufzubauen, dem ein SSH-Daemon fehlt, erhalten Sie ebenfalls die Meldung „Connection refused“. Die meisten Managed Hosting Provider haben standardmäßig SSH-Server vorinstalliert. SiteGround-Clients haben SSH in allen Plänen aktiviert.
Wenden Sie sich an Ihren Hosting-Provider, um sicherzustellen, dass der SSH-Daemon auf Ihrem Server installiert ist. Vielleicht ist der SSH-Daemon aktiviert, aber er ist derzeit inaktiv. Der Support Ihres Hostings kann die Einstellungen überprüfen und Ihnen weitere Informationen zur Verfügung stellen.
Falls Sie Ihren eigenen dedizierten Server oder localhost verwalten, müssen Sie das SSH-Daemon-Paket installieren.
Für die Installation des OpenSSH-Servers können Sie die folgenden Anleitungen verwenden.
- Wie installiere ich den OpenSSH-Server unter Linux Ubuntu/Debian
- Wie installiere ich den OpenSSH-Server unter Windows
- Wie installiere ich das OpenSSH-Paket unter Linux CentOS/RHEL
Eine Firewall blockiert den SSH-Port
Um die Daten und den Verkehr von verschiedenen Diensten effizient zu handhaben, verwenden die Betriebssysteme Ports. Ports sind Software-Endpunkte, die entwickelt wurden, um nur Daten von bestimmten Diensten zu verarbeiten. Zum Beispiel verwendet Ihre E-Mail-Anwendung einen Port, um E-Mails über SMTP zu senden und einen anderen Port, um eingehende Nachrichten über IMAP oder POP3 zu empfangen.
Der SSH-Dienst verwendet auch dedizierte Ports, um Daten auszutauschen. Standardmäßig ist der Port 22. Allerdings verwenden viele Hosting-Provider stattdessen einen benutzerdefinierten SSH-Port. Der SSH-Port auf SiteGround ist 18765.
Wenn Sie sich über den Port nicht sicher sind, können Sie einen der folgenden Befehle auf Ihrem Server ausführen.
$ grep Port /etc/ssh/ssh_config
oder
$ grep Port /etc/ssh/sshd_config
Die Ausgabe des Befehls zeigt den SSH-Port an. Im Beispiel unten zeigt das System an, dass es 22 ist.
Jeder offene Port wird als potenzielle Schwachstelle betrachtet, die böswillige Hackers ausnutzen könnten. Daher kann eine Firewall den SSH-Port blockieren. Am häufigsten werden restriktivere Firewall-Regeln für Büro-, VPN- und öffentliche Netzwerke wie das Wi-Fi von Universitäten, Flughäfen oder Bibliotheken festgelegt.
Wenn Sie ein solches Netzwerk verwenden und diese Fehlermeldung erhalten, testen Sie die Verbindung zu SSH von einem anderen Netzwerk. Idealerweise versuchen Sie es von zu Hause aus mit Wi-Fi, das weniger restriktiv sein sollte. Wenn Sie immer noch keine SSH-Verbindung herstellen können, überprüfen Sie Ihre Firewall-Einstellungen und stellen Sie sicher, dass Sie Verbindungen für die Ports 22 und 18765 (für SiteGround) zulassen.
Eine andere Möglichkeit ist, dass die Sperre vom Hosting-Server kommen kann. Sie können falsche Anmeldeinformationen verwenden und fehlgeschlagene Anmeldeversuche ansammeln. So kann die Firewall des Servers Ihre IP für Verbindungen auf dem SSH-Port blockieren. Wenden Sie sich an Ihren Hosting-Provider, damit er Ihre IP überprüfen und gegebenenfalls entsperren kann.
Falsche SSH-Anmeldeinformationen oder Port
Sie benötigen mehrere Anmeldeinformationen, um von Ihrem SSH-Client zu einem Server zu verbinden. Wenn eine der Einstellungen falsch ist, wird der Server die Meldung „Connection refused“ zurückgeben.
Jede SSH-Verbindung erfordert die folgenden Details:
- Hostname – Dies ist die Adresse des Servers. Es könnte die IP-Adresse, der Servername oder die Domain Ihrer Website sein (wenn der A-Record der Domain auf den Server verweist).
- SSH-Benutzername – der Benutzername für den SSH-Server der Website.
- Passwort – Es ist wichtig zu beachten, dass der SSH-Benutzer kein Passwort hat. Das geforderte Passwort ist die Passphrase Ihres privaten SSH-Schlüssels. Erfahren Sie mehr über SSH-Schlüssel.
- Port – der Standardport für SSH-Verbindungen ist Port 22. Aus Sicherheitsgründen verwenden viele Hosting-Provider jedoch einen benutzerdefinierten SSH-Port anstelle des Standardports. Der Port für SSH in SiteGround ist 18765.
Um sicherzustellen, dass Sie die richtigen Daten haben, melden Sie sich im Control Panel Ihres Hostings an. Es sollte einen Abschnitt geben, in dem die SSH-Anmeldeinformationen aufgeführt sind.
SiteGround-Benutzer können die Anmeldeinformationen in Site Tools finden. Öffnen Sie den Abschnitt “Websites” Ihres Kundenbereichs. Greifen Sie auf Site Tools für die jeweilige Site zu und navigieren Sie zum Abschnitt DEVS, dann wählen Sie SSH-Schlüssel-Manager. Auf dieser Seite können Sie den SSH-Benutzer, den Hostnamen und den Port unter SSH-Anmeldeinformationen sehen.
SSH-Dienst ist ausgefallen
Die meisten der bisher aufgeführten Lösungen helfen, da das Problem von Ihrem lokalen Gerät oder Netzwerk verursacht wird. Wenn keiner von ihnen geklappt hat, kann der Fehler durch ein anhaltendes Problem auf dem Hosting-Server verursacht werden.
Der SSH-Dienst kann ausfallen, wenn der Server aufgrund unzureichender Ressourcen oder massiver Verkehrsspitzen überlastet ist. Wenden Sie sich an den Support Ihres Hosting-Providers, damit er den Status des SSH-Dienstes überprüfen und weitere Informationen bereitstellen kann.
Wenn Sie Ihren eigenen dedizierten Server oder localhost verwalten, müssen Sie möglicherweise den Status des SSH-Servers überprüfen. Es kann installiert, aber nicht aktiviert sein.
Um den SSH-Server zu aktivieren, führen Sie den folgenden SSH-Befehl im Terminal aus.
$ sudo service ssh start
Wenn Sie den SSH-Server neu starten müssen, verwenden Sie den folgenden Befehl.
$ sudo service ssh restart
Zusammenfassung
SSH ist in vielen Situationen äußerst hilfreich und bietet eine breite Palette von Funktionen für fortgeschrittene Benutzer. Es ist unnötig zu erwähnen, dass es frustrierend ist, wenn ein so wichtiger Dienst ausfällt. Der Fehler „Connection refused“ läuft jedoch auf eine begrenzte Anzahl möglicher Ursachen hinaus.
In diesem Leitfaden wurden die häufigsten untersucht. Das Durchgehen der oben genannten Lösungen sollte Ihnen helfen, den Fehler zu beheben.
Ein weiterer Fehler im Zusammenhang mit SSH-Verbindungen ist „Permission denied“. Erfahren Sie mehr darüber und wie Sie es beheben können, in diesem Handbuch über den Fehler “Permission denied (publickey)” bei der Verbindung über SSH.
Für detaillierte Schritte, wie Sie eine SSH-Verbindung herstellen, lesen Sie diesen Artikel über den Zugriff auf Ihre Website über eine SSH-Verbindung.