Mögliche Gründe für eine Zeitüberschreitung beim Versuch, auf die EC2-Instanz zuzugreifen


101

Ich kann kein SSH in meine Instanz einfügen - Zeitüberschreitung des Vorgangs. Was könnten die Gründe dafür sein und was kann ich tun, um das Problem zu beheben? Ein Neustart dauert normalerweise lange und wird möglicherweise nur noch schlimmer

UPDATE: Es geht nicht um Berechtigungen - ich kann mich normalerweise ganz gut einloggen. Ich vermute, es könnte an Speicherproblemen liegen


3
Sie sollten serverfault.com ausprobieren, da dies keine Programmierfrage ist.
Williams

Firewall? SSH hört auf diesen Port?
OMG Ponys

1
Bleibt das Problem bestehen, wenn Sie eine andere Instanz starten? (Es kann auch hilfreich sein, mehr über Ihr Setup zu erfahren.) Ich habe meine Antwort aktualisiert.
Jonik

Pingen Sie zuerst den DNS. Wenn dies fehlschlägt, konfigurieren Sie Ihre eingehenden / ausgehenden Regeln im Startassistenten. Konfigurieren Sie ALLEN Datenverkehr und ALLES Protokoll und speichern Sie einfach mit den Standardoptionen. Pingen Sie erneut mit Ihrem lokalen System und sollte dann funktionieren.
Jungfrau

Antworten:


67

Haben Sie eine geeignete Sicherheitsgruppe für die Instanz festgelegt? Dh eine, die den Zugriff von Ihrem Netzwerk auf Port 22 der Instanz ermöglicht. (Standardmäßig ist der gesamte Datenverkehr nicht zulässig.)

Update: Ok, kein Problem mit Sicherheitsgruppen. Aber bleibt das Problem bestehen, wenn Sie eine andere Instanz von derselben AMI starten und versuchen, darauf zuzugreifen? Vielleicht ist diese spezielle EC2-Instanz zufällig fehlgeschlagen - es ist nur eine Frage der Zeit, dass so etwas passiert. (Empfohlene Lektüre: Architektur für die Cloud: Best Practices (PDF), ein Artikel von Jinesh Varia, einem Evangelisten für Webdienste bei Amazon. Siehe insbesondere den Abschnitt "Design für Fehler und nichts wird fehlschlagen".)


Das Gleiche gilt für die EC2-FAQ: developer.amazonwebservices.com/connect/… (Außerdem ec2-authorizekönnen Sie die Elasticfox Firefox-Erweiterung verwenden, um die Gruppen einfach zu konfigurieren.)
Jonik

1
Meine Güte ... das Öffnen des SSH-Ports in der Gruppe ist so einfach , dass ich nicht glauben kann, dass es hier nicht vorhanden ist: alestic.com/2009/08/ec2-connectivity . Vielen Dank für den Hinweis.
Mtyson

Oh, ich habe die Sicherheitsgruppe komplett vergessen! Vielen Dank!
Antonio Beno

91

Ich hatte das gleiche Problem und die Lösung bestand darin, die IP meines lokalen Computers zur Liste der eingehenden Regeln in der aktiven Sicherheitsgruppe hinzuzufügen. Geben Sie im folgenden Dialogfeld "Eingehend" 22 in den Portbereich und Ihre lokale IP / 32 in das Quellfeld ein und lassen Sie "Benutzerdefinierte TCP-Regel" in der Dropdown-Liste.

Geben Sie hier die Bildbeschreibung ein


6
Nachdem Sie auf die Schaltfläche "Regel hinzufügen" geklickt haben, müssen Sie auch auf "Regeländerung anwenden" klicken, damit sie wirksam wird. Vergiss das nicht. Es hat mich ein paar Mal durcheinander gebracht.
Ted.strauss

Vielen Dank dafür!
Hego555

Perfekte Antwort! Ich habe keine Angst mehr
davor

2
das hat bei mir funktioniert, danke !! Aus irgendeinem Grund änderte sich meine IP-Adresse und plötzlich konnte ich nicht mehr in meine ec2-Instanz einsteigen. Ich habe gerade eine Regel hinzugefügt und anstatt eine "benutzerdefinierte" IP-Adresse einzugeben, habe ich einfach "meine IP" und "wala" ausgewählt ... Ich konnte ssh in!
Rikkitikkitumbo

Gute Antwort! Ich fand diese Fehlerbehebung von AWS ebenfalls sehr nützlich und sie enthält den hier oben vorgeschlagenen Punkt.
J0ANMM

28

Zerstören und neu erschaffen

Ich hatte eine Verfügbarkeitszone, in der ich eine Verbindung herstellen konnte, und eine andere, in der ich keine Verbindung herstellen konnte. Nach ein paar Stunden war ich so frustriert, dass ich alles in dieser Verfügbarkeitszone gelöscht habe.

Als ich alles zurückbaute, musste ich sicherstellen, dass ALLES geschaffen wurde. Dies beinhaltete:

  • VPC erstellen
    • CIDR: 10.0.0.0/24
  • Erstellen Sie ein Internet-Gateway
  • Schließen Sie das Internet Gateway an die VPC an
  • Erstellen Sie eine Routing-Tabelle
  • In Weg zu Routing Table
    • Destination: 0.0.0.0/0
    • Target: <Internet Gateway from earlier>
  • Subnetz erstellen
    • CIDR: 10.0.0.0/24
    • Routing Table: <Routing Table from earlier

Ich brauchte eine Menge Fummelei, um all das zu bekommen. Ich habe die Schritte so bestellt, wie ich es für am effizientesten halte, aber Sie müssen sie möglicherweise anpassen, um einen Artikel für den nächsten verfügbar zu machen.

Vorschlag

Ich schlage nicht vor, dass Sie wie ich thermo-nuklear werden. Ich biete all diese Informationen an, damit Sie diese Zuordnungen überprüfen können, um sicherzustellen, dass Ihre angemessen sind.


6
das hat mir wirklich geholfen! Ich hatte einen Fall, in dem meine Routing-Tabelle nicht auf ein Internet-Gateway zeigte, und das war das einzige Problem.
EdgeCaseBerg

Ehrlich gesagt dokumentiere ich diese Dinge auf SO und in Github / Gists, weil ich weiß, dass ich mich selbst treten werde, wenn ich es in 2 Monaten erneut tun muss. Ich hoffe, dass es auch anderen hilft. Aber letztendlich bin ich nur eine egoistische Katastrophe. Vielen Dank, dass Sie sich die Zeit für einen Kommentar genommen haben, @EdgeCaseBerg.
Bruno Bronosky

2
Vielen Dank an TON @BrunoBronosky. Genau dann, wenn dieses "Internet-Gateway" -Ding so ist, warum sollte die Standard-AWS-Dokumentation das dann nicht erwähnen? :(
Anand

1
@BrunoBronosky danke! Genau dies hat mich daran gehindert, eine Verbindung zur Instanz herzustellen. Ich werde diese Schritte für meine Zukunft mir speichern.
Saiyancoder

21

Diese Antwort ist für die dummen Leute (wie ich). Das öffentliche DNS Ihres EC2 kann sich beim Neustart ändern (wird). Wenn Sie dies nicht bemerken und versuchen, SSH in Ihr altes öffentliches DNS zu integrieren, wird die Verbindung unterbrochen und es tritt eine Zeitüberschreitung auf. Dies kann dazu führen, dass Sie annehmen, dass etwas mit Ihrer EC2- oder Sicherheitsgruppe nicht stimmt oder ... Nein, nur SSH in das neue DNS. Und aktualisieren Sie Ihre ~/.ssh/configDatei, wenn Sie müssen!


Eine Stunde zur Behebung meiner Timeout-Probleme und dies war die Lösung. Danke :)
Eric D. Brown

2
Vielen Dank @dslosky du hast mein Leben gerettet. :)
A_01

12

Um eine Verbindung herzustellen, verwenden Sie ssh wie folgt:

ssh -i keyname.pem username@xxx.xx.xxx.xx

Wo keyname.pemist der Name Ihres privaten Schlüssels, usernameist der richtige Benutzername für Ihre Betriebssystemdistribution und xxx.xx.xxx.xxist die öffentliche IP-Adresse.

Überprüfen Sie Folgendes, wenn das Zeitlimit überschritten wird oder fehlschlägt:

Sicherheitsgruppe

Stellen Sie sicher, dass Sie eine eingehende Regel für TCP-Port 22 und entweder alle IPs oder Ihre IP haben. Sie finden die Sicherheitsgruppe über das Menü ec2 in den Instanzoptionen.

Routing-Tabelle

Für ein neues Subnetz in einem VPC müssen Sie zu einer Routing-Tabelle wechseln, die 0.0.0.0/0 auf das Internet-Gateway-Ziel verweist . Wenn Sie das Subnetz in Ihrem VPC erstellen, wird standardmäßig die Standard-Routing-Tabelle zugewiesen, die wahrscheinlich keinen eingehenden Datenverkehr aus dem Internet akzeptiert. Sie können die Routing-Tabellenoptionen im vpc-Menü und dann in den Subnetzen bearbeiten.

Elastische IP

Für eine Instanz in einem VPC müssen Sie eine öffentliche elastische IP-Adresse zuweisen und diese der Instanz zuordnen . Auf die private IP-Adresse kann von außen nicht zugegriffen werden. Sie können eine elastische IP im ec2-Menü (nicht im Instanzmenü) erhalten.

Nutzername

Stellen Sie sicher, dass Sie den richtigen Benutzernamen verwenden . Es sollte einer von ec2-useroder rootoder sein ubuntu. Probieren Sie sie bei Bedarf alle aus.

Privat Schlüssel

Stellen Sie sicher, dass Sie den richtigen privaten Schlüssel verwenden (den Sie herunterladen oder beim Starten der Instanz auswählen). Scheint offensichtlich, aber Copy Paste hat mich zweimal erwischt.


1
Vielen Dank dafür, ich vergesse immer, das 0.0.0.0/0 zum Internet-Gateway-Ziel hinzuzufügen, wenn ich eine neue VPC erstelle
Chathushka

7

Haben Sie sich die Konsolenausgabe der Instanz angesehen? Sie können dies über die AWS-Konsole tun (Instanzen -> Rechtsklick auf die Instanz -> Systemprotokoll abrufen). Ich hatte Fälle, in denen die Netzwerkdienste auf einer EC2-Instanz nicht ordnungsgemäß gestartet wurden, was zu einer Zeitüberschreitung bei SSH-Verbindungen führte. Beim Neustart der Instanz wurden normalerweise Probleme behoben.


3

Geben Sie hier die Bildbeschreibung ein

Nach 2 Stunden habe ich das gefunden

Beachten Sie, dass ssh ip 120.138.105.251/32

  • IST NICHT aws Instanz IP-ADRESSE

  • Es ist nicht Ihre lokale IP 127.0.0.1

  • Es ist nicht Ihre lokale IP localhost

ABER, ABER, ABER

Es ist Ihre öffentliche IP-Adresse Ihres PCs, von dem aus Sie versuchen, auf eine aws-Instanz zuzugreifen

  1. Gehen Sie zu https://www.whatismyip.com/, egal welche IP-Adresse in ssh eingegeben wurde

WENN SIE SSH FÜR ALLE IP-ADRESSEN VOLLSTÄNDIG ÖFFNEN MÖCHTEN Geben Sie hier die Bildbeschreibung ein

So sehen vollständig zugängliche Einträge aus - grundsätzlich empfohlen Geben Sie hier die Bildbeschreibung ein

DAS VERWENDE ICH IN DER PRODUKTION Geben Sie hier die Bildbeschreibung ein


2

Folgende Probleme sind möglich:

  • Am wahrscheinlichsten ist, dass die Sicherheitsgruppe nicht richtig konfiguriert ist, um SSH-Zugriff auf Port 22 auf Ihre IP-Adresse zu ermöglichen. Eine Änderung der Sicherheitseinstellung erfordert keinen Neustart des Servers, damit dieser wirksam wird, sondern einige Minuten warten muss, bis er wirksam ist anwendbar.

  • Die lokale Firewall-Konfiguration erlaubt keinen SSH-Zugriff auf den Server. (Sie können eine andere Internetverbindung ausprobieren, Ihr Telefon / Dongle, um es zu versuchen)

  • Der Server wird nicht ordnungsgemäß gestartet (dann schlagen die Zugriffsprüfungen auch auf der Amazon-Konsole fehl). In diesem Fall müssten Sie den Server stoppen und starten.


In meinem Fall handelte es sich um ein Firewall-Problem in dem Netzwerk, an dem ich arbeite. Die Verwendung eines VPN zur Umrundung hat funktioniert.
MDave

1

Schauen Sie sich diese Hilfeseite in AWS-Dokumenten an:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshooterInstancesConnectionTimeout Dort finden Sie wahrscheinlich Ihre Lösung. Für mich hat dieser Teil das Problem behoben:

[EC2-VPC] Überprüfen Sie die Routentabelle für das Subnetz. Sie benötigen eine Route, die den gesamten außerhalb der VPC bestimmten Datenverkehr an das Internet-Gateway für die VPC sendet.

  • Öffnen Sie die Amazon VPC-Konsole unter https://console.aws.amazon.com/vpc/ .

  • Wählen Sie im Navigationsbereich Internet Gateways. Stellen Sie sicher, dass an Ihre VPC ein Internet-Gateway angeschlossen ist. Andernfalls wählen Sie Internet-Gateway erstellen und befolgen Sie die Anweisungen zum Erstellen eines Internet-Gateways, wählen Sie das Internet-Gateway aus, wählen Sie dann An VPC anhängen und befolgen Sie die Anweisungen, um es an Ihre VPC anzuschließen.

  • Wählen Sie im Navigationsbereich Subnetze und dann Ihr Subnetz.

  • Stellen Sie auf der Registerkarte Routentabelle sicher, dass eine Route mit 0.0.0.0/0 als Ziel und dem Internet-Gateway für Ihre VPC als Ziel vorhanden ist. Andernfalls wählen Sie die ID der Routentabelle (rtb-xxxxxxxx), um zur Registerkarte Routen für die Routentabelle zu navigieren, wählen Sie Bearbeiten, Weitere Route hinzufügen, geben Sie unter Ziel 0.0.0.0/0 ein, wählen Sie Ihr Internet-Gateway unter Ziel aus und dann Wählen Sie Speichern.

Aber ich schlage vor, Sie prüfen alle Optionen, die der obige Link abdeckt. Möglicherweise finden Sie dort das eine oder die mehreren Probleme, die Sie haben.


1

Mein Problem - Ich hatte Port 22 für "Meine IP" geöffnet und die verursachte Internetverbindung und IP-Adressänderung geändert. Also musste ich es wieder ändern.


1

Aufbauend auf @ted.straussder Antwort können Sie SSHund MyIPaus dem Dropdown-Menü auswählen , anstatt zu einer Website eines Drittanbieters zu navigieren.


1

Starten Sie die Ec2-Instanz einfach neu, sobald Sie Rules angewendet haben


1

Erlaube ssh und Port 22 von ufw, aktiviere es dann und überprüfe mit dem Statusbefehl

sudo ufw allow ssh
sudo ufw allow 22
sudo ufw enable
sudo ufw status

0

Noch eine Möglichkeit. AWS-Sicherheitsgruppen sind so eingerichtet, dass sie nur mit bestimmten eingehenden IP-Adressen funktionieren. Wenn Ihre Sicherheitsgruppe auf diese Weise eingerichtet ist, müssen Sie (oder der Kontoinhaber) Ihre IP-Adresse zur Sicherheitsgruppe hinzufügen. Öffnen Sie dazu Ihr AWS-Dashboard, wählen Sie Sicherheitsgruppen aus, wählen Sie eine Sicherheitsgruppe aus und klicken Sie auf die Registerkarte Eingehend. Fügen Sie dann Ihre IP nach Bedarf hinzu.


0

Ich hatte das gleiche Problem und die Lösung bestand darin, von überall auf die Liste der eingehenden Regeln in der aktiven Sicherheitsgruppe zuzugreifen. Geben Sie im Dialogfeld "Eingehend" an einer beliebigen Stelle 22 in den Portbereich ein " im Portbereich an einer im Quellfeld und wählen Sie in der Dropdown-Liste "ssh" aus.

PS: Dies ist möglicherweise nicht die empfohlene Lösung, da diese Instanz von jedem Computer aus ssh'ed werden kann, aber ich konnte sie nicht mit meiner lokalen IP zum Laufen bringen.


0

Ich hatte ein ähnliches Problem, als ich öffentliches Wifi benutzte, das kein Passwort hatte. Das Umschalten der Internetverbindung auf eine sichere Verbindung hat das Problem gelöst.


0

Wenn der SSH-Zugriff für Ihre EC2-Instanz nicht funktioniert, müssen Sie Folgendes überprüfen:

  • Die Sicherheitsgruppe für Ihre Instanz ermöglicht den eingehenden SSH-Zugriff (überprüfen: Regeln anzeigen ).

Wenn Sie eine VPC-Instanz verwenden ( an Ihre Instanz sind eine VPC-ID und eine Subnetz-ID angehängt), überprüfen Sie Folgendes :

  1. Suchen Sie im VPC-Dashboard nach der verwendeten Subnetz-ID, die an Ihre VPC angehängt ist.
  2. Überprüfen Sie die angehängte Routentabelle, die 0.0.0.0/0als Ziel und Ihr Internet-Gateway als Ziel haben sollte.

Unter Linux können Sie auch die Routeninformationen im Systemprotokoll im Netzwerk der Instanz überprüfen , z.

++++++++++++++++++++++++++++++++++++++Net device info+++++++++++++++++++++++++++++++++++++++
+--------+------+------------------------------+---------------+-------+-------------------+
| Device |  Up  |           Address            |      Mask     | Scope |     Hw-Address    |
+--------+------+------------------------------+---------------+-------+-------------------+
|   lo   | True |          127.0.0.1           |   255.0.0.0   |   .   |         .         |
|  eth0  | True |         172.30.2.226         | 255.255.255.0 |   .   | 0a:70:f3:2f:82:23 |
+--------+------+------------------------------+---------------+-------+-------------------+
++++++++++++++++++++++++++++Route IPv4 info+++++++++++++++++++++++++++++
+-------+-------------+------------+---------------+-----------+-------+
| Route | Destination |  Gateway   |    Genmask    | Interface | Flags |
+-------+-------------+------------+---------------+-----------+-------+
|   0   |   0.0.0.0   | 172.30.2.1 |    0.0.0.0    |    eth0   |   UG  |
|   1   |   10.0.3.0  |  0.0.0.0   | 255.255.255.0 |   lxcbr0  |   U   |
|   2   |  172.30.2.0 |  0.0.0.0   | 255.255.255.0 |    eth0   |   U   |
+-------+-------------+------------+---------------+-----------+-------+

wo UG Flaggen Ihnen Ihr Internet-Gateway zeigen.

Weitere Informationen finden Sie unter: Fehlerbehebung beim Herstellen einer Verbindung zu Ihrer Instanz in Amazon-Dokumenten.


0

Gehen Sie wie folgt vor, um den SSH-Zugriff aus dem Internet für Instanzen in einem VPC-Subnetz zu aktivieren:

  • Schließen Sie ein Internet-Gateway an Ihre VPC an.
  • Stellen Sie sicher, dass die Routentabelle Ihres Subnetzes auf das Internet-Gateway verweist.
  • Stellen Sie sicher, dass Instanzen in Ihrem Subnetz eine global eindeutige IP-Adresse haben (öffentliche IPv4-Adresse, elastische IP-Adresse oder IPv6-Adresse).
  • Stellen Sie sicher, dass Ihre Netzwerkzugriffskontrolle (auf VPC-Ebene) und Sicherheitsgruppenregeln (auf ec2-Ebene) den relevanten Datenverkehr zu und von Ihrer Instanz ermöglichen. Stellen Sie sicher, dass die öffentliche IP-Adresse Ihres Netzwerks für beide aktiviert ist. Standardmäßig lässt Network AcL den gesamten eingehenden und ausgehenden Datenverkehr zu, sofern nicht ausdrücklich anders konfiguriert

0

Für mich war es der Apache-Server, der auf einer t2.micro Linux EC2-Instanz gehostet wurde, nicht die EC2-Instanz selbst.

Ich habe es behoben, indem ich:

sudo su

service httpd restart


0

Ich hatte das gleiche Problem und löste es, indem ich den Sicherheitsgruppen eine Regel hinzufügte

Eingehende SSH 0.0.0.0/0

Oder Sie können nur Ihre IP-Adresse hinzufügen


0

Für mich war es so, dass ich alles vom Boot-Volume gelöscht hatte. Und konnte keine Verbindung mehr zur Instanz herstellen.


0

Ich habe an der Instanz gearbeitet und es war in Ordnung, als ich am nächsten Tag versuchte, SSH in meine Instanz zu integrieren, stand dort - Verbindungs-Timeout.

Ich habe versucht, diesen Beitrag durchzugehen, aber nichts hat funktioniert. So tat ich -

Auf der Edit inbound rulesSpalte wählte aus der Quelle MY IPund es wird automatisch Ihre öffentliche IP - Adresse im CIDR - Format (auffüllen XXX.XXX.XXX.XX/32).

Ich habe es mit der Antwort @ ted.strauss versucht, indem ich die lokale IP angegeben habe, aber in meinem Fall hat es nicht geholfen. Also wähle ich MEINE IP und es hat funktioniert.

Hoffe das hilft jemandem!


0

Pingen Sie zuerst den DNS. Wenn dies fehlschlägt, konfigurieren Sie Ihre eingehenden / ausgehenden Regeln im Startassistenten. Konfigurieren Sie ALLEN Datenverkehr und ALLES Protokoll und speichern Sie einfach mit den Standardoptionen. Pingen Sie erneut mit Ihrem lokalen System und sollte dann funktionieren


0

Wenn Sie gerade eine neue Instanz erstellt haben und keine Verbindung herstellen können, konnte ich das Problem lösen, indem ich diese beendete und eine neue erstellte. Dies funktioniert natürlich nur, wenn es sich um eine neue Instanz handelt und Sie nicht mehr daran gearbeitet haben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.