Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Wie behebe ich die Fehler „Connection refused“ oder „Connection timed out“, wenn ich SSH verwende, um eine Verbindung zu meiner EC2-Instance herzustellen?
Ich erhalte die Fehlermeldung „Connection refused“ oder „Connection timed out“, wenn ich SSH verwende, um eine Verbindung zu meiner Amazon Elastic Compute Cloud (Amazon EC2)-Instance herzustellen.
Kurzbeschreibung
Wenn bei deiner Verbindung ein Timeout auftritt, erhältst du vom SSH-Client die folgende Fehlermeldung:
„ssh: connect to host ec2-X-X-X-X.compute-1.amazonaws.com port 22: Connection timed out“
Der Fehler Connection timed out tritt auf, wenn der Server nicht auf den Client reagiert und das Client-Programm aufgibt (Timeout).
Wenn ein Host deine Verbindung aus der Ferne ablehnt, erhältst du die folgende Fehlermeldung:
„ssh: connect to host ec2-X-X-X-X.compute-1.amazonaws.com port 22: Connection refused“
Lösung
Fehler „Connection timed out"
Wenn du den Fehler Connection timed out erhältst, überprüfe die folgenden Konfigurationen:
- Die IP-Adresse oder der Hostname der Instance sind korrekt.
- Die Instance besteht ihre Zustandsprüfungen.
- Die Sicherheitsgruppe der Instance lässt eingehenden Datenverkehr auf TCP-Port 22 zu.
- Die Netzwerk-Zugriffssteuerungslisten (Netzwerk-ACLs) des Instance-Subnetzes ermöglichen eingehenden Datenverkehr auf TCP-Port 22 und ausgehenden Datenverkehr auf den kurzlebigen Ports.
- Die Routing-Tabelle des Instance-Subnetzes stellt die Konnektivität zwischen der Instance und dem SSH-Client bereit.
- Es gibt keine Firewall, die die Verbindung zwischen dem SSH-Client und der Instance blockiert.
- Die TCP-Wrapper der Instance blockieren SSH nicht. Weitere Informationen findest du unter 2.6.2. TCP Wrappers configuration files (2.6.2. TCP-Wrapper-Konfigurationsdateien) auf der Red Hat-Website.
Hinweis: Um nach Problemen mit der Firewall oder den TCP-Wrappern zu suchen, musst du über Betriebssystem (OS)-Zugriff auf die Instance verfügen.
Fehler „Connection refused“
Wenn du den Fehler Connection refused erhältst, überprüfe die folgenden Konfigurationen:
- Auf der Instance gibt es keine Firewall, die die SSH-Verbindung blockiert.
- Der SSH-Daemon (sshd) wird ausgeführt und überwacht Port 22.
Hinweis: Um die vorherigen Konfigurationen zu überprüfen, benötigst du Zugriff auf die Instance auf Betriebssystemebene.
Probleme mit Instances beheben, die beide Zustandsprüfungen bestehen
Verwende eine der folgenden Methoden zur Problembehandlung, um Probleme mit Instances zu beheben, die ihre Zustandsprüfungen bestehen.
Das AWSSupport-TroubleshootSSH-Runbook ausführen
Es hat sich bewährt, das AWSSupport-TroubleshootSSH-Automatisierungs-Runbook auszuführen. Das Runbook installiert das **Amazon EC2Rescue-**Tool auf der Instance, um Probleme zu identifizieren und zu beheben, die eine Remote-SSH-Verbindung zu einem Linux-Host blockieren.
Verwendung der seriellen EC2-Konsole für Linux
Verwende die serielle EC2-Konsole für Linux, um Probleme auf Betriebssystemebene wie Boot-Probleme, Netzwerkkonfigurationsprobleme und SSH-Konfigurationsprobleme bei unterstützten Instance-Typen zu beheben.
Voraussetzungen:
- Gewähre Zugriff auf die Konsole auf AWS-Kontoebene.
- Erstelle AWS Identity and Access Management (IAM, Identitäts- und Zugriffsmanagement)-Richtlinien, die IAM-Benutzern ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configure-access-to-serial-console.html#sc-account-access-permissions)Zugriff auf die Konsole gewähren[.
Hinweis: Jede Instance, die die serielle EC2-Konsole verwendet, muss mindestens einen passwortbasierten Linux-Benutzer mit Sudo-Zugriff haben.
Weitere Informationen findest du unter Zugriff auf die serielle EC2-Konsole konfigurieren.
Wenn kein Linux-Konto mit einem konfigurierten Anmeldepasswort vorhanden ist, musst du ssm-user ausführen, um das Passwort für ein Konto mit Sudo-Zugriff zurückzusetzen.
Gehe wie folgt vor, um zu überprüfen, ob deine Konfiguration den SSH-Zugriff nicht blockiert:
-
Wenn du iptables-Regeln konfiguriert hast, führe den folgenden Befehl aus, um eine Regel in iptables hinzuzufügen, die alle SSH-Verbindungen auf Port 22 akzeptiert:
sudo iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT -
Wenn du eine betriebssystembasierte Firewall verwendest, deaktiviere sie. Es hat sich bewährt, Sicherheitsgruppen anstelle einer Firewall zu verwenden. Um eine betriebssystembasierte Firewall zu deaktivieren, führe je nach Betriebssystem die folgenden Befehle aus.
Wichtig: Die folgenden Befehle löschen alle wichtigen iptables-Regeln und vorhandene Regeln. Die Befehle fügen auch eine Regel hinzu, die eingehende SSH-Verbindungen zulässt, und ändern die Standardrichtlinie der Hauptkette in ACCEPT (Akzeptieren). Diese Konfiguration stellt sicher, dass du die Netzwerkkonnektivität der Instance nicht beeinträchtigst, wenn du die iptables-Regel löschst.
Verteilungen, die UFW verwenden, wie Ubuntu und Debian:sudo iptables -F$ sudo iptables -P INPUT ACCEPT sudo ufw disableVerteilungen, die firewalld verwenden, wie Red Hat Enterprise Linux (RHEL) und CentOS:
sudo iptables -F $ sudo iptables -P INPUT ACCEPT sudo systemctl disable firewalldHinweis: Nachdem du wieder Zugriff auf deine Instance hast, überprüfe die Firewall-Konfiguration.
-
Führe den folgenden Befehl aus, um zu überprüfen, ob SSH ausgeführt wird und ob sich der SSH-TCP-Port 22 im Lauschstatus befindet:
sudo systemctl restart sshd$ sudo ss -tpln | grep -iE '22|ssh'LISTEN 0 128 *:22 *:* users:(("sshd",pid=1901,fd=3)) LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1901,fd=4))Hinweis: Wenn dein System den Befehl ss nicht hat, ersetze ss durch den Legacy-Befehl netstat. Stelle sicher, dass du dieselbe Syntax wie im vorherigen Befehl verwendest.
-
Um sicherzustellen, dass der TCP-Wrapper keine SSH-Verbindung blockiert, führe den folgenden Befehl aus:
if [[ $( cat /etc/hosts.[ad]* | grep -vE '^#' | awk 'NF' | wc -l) -ne 0 ]];\ then sudo sed -i '1i sshd2 sshd : ALL: allow' /etc/hosts.allow; fi -
Trenne die Verbindung zur Sitzung der seriellen EC2-Konsole.
Systems Manager verwenden
Voraussetzungen: Um Session Manager, eine Funktion von AWS Systems Manager, verwenden zu können, muss deine Instance ein verwalteter Knoten sein. Der Ping-Status des AWS Systems Manager Agent (SSM Agent) der Instance muss Online sein, und die angefügte IAM-Rolle muss über AmazonSSMManagedInstanceCore-Berechtigungen verfügen. Stelle sicher, dass du alle Voraussetzungen für Session Manager erfüllst.
Verwende den Session Manager, um eine Sitzung für den Zugriff auf die Instance zu starten.
Verwendung eines Benutzerdatenskripts
Wenn du die oben genannten Methoden zur Problembehandlung nicht verwenden kannst, verwende ein Benutzerdatenskript, um die Firewall auf Betriebssystemebene und den TCP-Wrapper zu deaktivieren. Starte dann den sshd-Service neu.
Wichtig: Bevor du die Instance stoppst und startest, gehe wie folgt vor:
- Erstelle eine Sicherungskopie deines Amazon Elastic Block Store (Amazon EBS)-Volumes.
**Hinweis:**Wenn die Instance vom Instance-Speicher unterstützt wird oder über Instance-Speicher-Volumes verfügt, die Daten enthalten, löscht Amazon EC2 die Daten, wenn du die Instance anhältst. - Entferne die Instance vorübergehend aus der Amazon EC2 Auto Scaling-Gruppe, wenn du die Lösungsschritte abschließt.
Hinweis: Wenn du eine Instance anhältst, die sich in einer EC2 Auto Scaling-Gruppe befindet, beendest du die Instance möglicherweise auf der Grundlage der Abskalierungs-Schutzeinstellungen. Instances, die du mit Amazon EMR, AWS CloudFormation oder AWS Elastic Beanstalk startest, sind möglicherweise Teil einer Auto-Scaling-Gruppe. - Stelle das Verhalten beim Herunterfahren der Instance auf Stopp ein, um sicherzustellen, dass die Instances nicht beendet werden, wenn du sie anhältst.
Hinweis: Wenn du eine Instance stoppst und startest, ändert sich die öffentliche IP-Adresse der Instance. Es empfiehlt sich, beim Weiterleiten von externem Datenverkehr an die Instance eine Elastic-IP-Adresse anstelle einer öffentlichen IP-Adresse zu verwenden.
Gehe wie folgt vor, um Benutzerdaten für die Instance zu konfigurieren:
- Öffne die Amazon-EC2-Konsole.
- Wähle im Navigationsbereich Instances und dann deine Instance aus.
- Stoppe die Instance.
- Wähle Aktionen und dann Instance-Einstellungen aus.
- Wähle Benutzerdaten bearbeiten und gib dann das folgende Benutzerdatenskript ein:
Hinweis: Das vorherige Benutzerdatenskript ist so eingerichtet, dass es bei jedem Instance-Reboot ausgeführt wird. Diese Methode entfernt alle wichtigen iptables-Regeln.Content-Type: multipart/mixed; boundary="//"MIME-Version: 1.0 --// Content-Type: text/cloud-config; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="cloud-config.txt" #cloud-config cloud_final_modules: - [scripts-user, always] --// Content-Type: text/x-shellscript; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="userdata.txt" #!/bin/bash iptables -P INPUT ACCEPT iptables -F systemctl restart sshd.service || service sshd restart if [[ $( cat /etc/hosts.[ad]* | grep -vE '^#' | awk 'NF' | wc -l) -ne 0 ]];\ then sudo sed -i '1i sshd2 sshd : ALL: allow' /etc/hosts.allow; fi --// - Wähle Speichern aus.
- Verwende SSH, um eine Verbindung zur Instance herzustellen.
- Nachdem du wieder Zugriff auf die Instance hast, entferne das Benutzerdatenskript und überprüfe dann, ob die Firewallkonfiguration korrekt ist.
Ähnliche Informationen
Fehler beim Herstellen einer Verbindung zur Instance: Zeitüberschreitung bei der Verbindung
Wie behebe ich Zeitüberschreitungsfehler bei Amazon-EC2-Instance-Verbindungen aus dem Internet?
- Sprache
- Deutsch
Ähnliche Videos


Relevanter Inhalt
AWS OFFICIALAktualisiert vor einem Jahr
AWS OFFICIALAktualisiert vor 8 Monaten
AWS OFFICIALAktualisiert vor 4 Jahren