Raisons possibles du délai d'expiration lors de la tentative d'accès à l'instance EC2

102

Je ne peux pas SSH dans mon instance - L'opération a expiré. Quelles pourraient en être les raisons et que puis-je faire pour le résoudre? Le redémarrage prend normalement beaucoup de temps pour prendre effet, et pourrait simplement aggraver les choses

MISE À JOUR: Il ne s'agit pas d'autorisations - je peux me connecter normalement très bien. Je soupçonne que cela peut être dû à des problèmes de mémoire

ming yeow
la source
3
Vous devriez essayer serverfault.com car ce n'est pas vraiment une question de programmation.
rwilliams
Pare-feu? SSH écoute sur ce port?
OMG Ponies
1
Le problème persiste-t-il si vous lancez une autre instance? (Cela peut également aider à en savoir plus sur votre configuration.) J'ai mis à jour ma réponse.
Jonik
envoyez d'abord un ping au DNS. En cas d'échec, configurez vos règles entrantes / sortantes dans l'assistant de lancement. configurez TOUT le trafic et TOUT le protocole et enregistrez simplement avec les options par défaut. Ping à nouveau avec votre système local et devrait ensuite fonctionner.
Maiden le

Réponses:

67

Avez-vous défini un groupe de sécurité approprié pour l'instance? C'est-à-dire celui qui permet d'accéder depuis votre réseau au port 22 de l'instance. (Par défaut, tout le trafic est interdit.)

Mise à jour: OK, pas un problème de groupe de sécurité. Mais le problème persiste-t-il si vous lancez une autre instance à partir de la même AMI et essayez d'y accéder? Peut-être que cette instance EC2 particulière a échoué au hasard d'une manière ou d'une autre - ce n'est qu'une question de temps que quelque chose comme ça se produise. (Lecture recommandée: Architecting for the Cloud: Best Practices (PDF), un article de Jinesh Varia, évangéliste des services Web chez Amazon. Voir en particulier la section intitulée «Concevoir en cas d'échec et rien n'échouera».)

Jonik
la source
Voici la même chose sur la FAQ EC2: developer.amazonwebservices.com/connect/... (D'ailleurs ec2-authorize, vous pouvez utiliser l'extension Elasticfox Firefox pour configurer facilement les groupes.)
Jonik
1
Mon Dieu ... ouvrir le port SSH dans le groupe est si basique, je ne peux pas croire que ce n'est pas ici: alestic.com/2009/08/ec2-connectivity . Merci de l'avoir signalé.
mtyson
oh, j'ai complètement oublié le groupe de sécurité! Merci!
Antonio Beno
91

J'ai eu le même problème et la solution a fini par ajouter l'IP de ma machine locale à la liste des règles entrantes dans le groupe de sécurité actif. Dans la boîte de dialogue entrante ci-dessous, entrez 22 dans la plage de ports, votre IP / 32 local dans le champ source et laissez «règle tcp personnalisée» dans la liste déroulante.

entrez la description de l'image ici

ted.strauss
la source
6
Après avoir appuyé sur le bouton «Ajouter une règle», vous devez également cliquer sur «Appliquer le changement de règle» pour qu'il prenne effet. N'oublie pas ça. Cela m'a gâché plusieurs fois.
ted.strauss
Merci énormément pour ceci!
Hego555
Réponse parfaite! Je n'ai plus peur d'être piraté: D
softvar
2
cela a fonctionné pour moi, merci !! Pour une raison quelconque ... mon adresse IP a changé, et tout d'un coup je n'ai pas pu ssh dans mon instance ec2. J'ai juste ajouté une règle, et au lieu de mettre une adresse IP "personnalisée", j'ai juste sélectionné "mon IP" et wala ... j'ai pu entrer en ssh!
rikkitikkitumbo
Bonne réponse! J'ai trouvé ce dépannage d'AWS très utile également, et il contient le point suggéré ci-dessus.
J0ANMM
28

Détruisez et créez à nouveau

J'avais une zone de disponibilité où je pouvais me connecter et une autre où je ne pouvais pas. Après quelques heures, j'ai été tellement frustré que j'ai tout supprimé dans cette zone de disponibilité.

Tout reconstruire, je devais m'assurer de TOUT créer. Cela comprenait:

  • Créer un VPC
    • CIDR: 10.0.0.0/24
  • Créer une passerelle Internet
  • Attacher Internet Gateway au VPC
  • Créer une table de routage
  • Ajouter une route à la table de routage
    • Destination: 0.0.0.0/0
    • Target: <Internet Gateway from earlier>
  • Créer un sous-réseau
    • CIDR: 10.0.0.0/24
    • Routing Table: <Routing Table from earlier

Il m'a fallu BEAUCOUP de tâtonnements pour obtenir tout cela. J'ai ordonné les étapes de la manière qui, selon moi, pourrait être la plus efficace, mais vous devrez peut-être les ajuster pour obtenir un article disponible pour le suivant.

Suggestion

Je ne suggère pas que vous deveniez thermo-nucléaire comme je l'ai fait. J'offre toutes ces informations afin que vous puissiez vérifier ces associations pour vous assurer que les vôtres sont appropriées.

Bruno Bronosky
la source
6
Cela m'a vraiment aidé! J'ai eu un cas où ma table de routage n'était pas pointée vers une passerelle Internet et c'était le seul problème.
EdgeCaseBerg
Honnêtement, je documente ces choses sur SO et dans github / gists parce que je sais que je me donnerai un coup de pied quand j'aurai besoin de le refaire dans 2 mois. J'espère que cela aide aussi les autres. Mais finalement, je ne suis qu'un désastre égoïste. Merci d'avoir pris le temps de commenter, @EdgeCaseBerg.
Bruno Bronosky
2
Merci beaucoup @BrunoBronosky. Exactement, si ce truc de «passerelle Internet» est le cas, alors pourquoi la documentation AWS par défaut ne le mentionne pas? :(
Anand
1
@BrunoBronosky merci! C'est exactement ce qui m'empêchait de me connecter à l'instance. Je vais garder ces étapes pour mon avenir moi.
saiyancoder
21

Cette réponse est pour les gens stupides (comme moi). Le DNS public de votre EC2 peut (changera) lors du redémarrage. Si vous ne vous en rendez pas compte et essayez de SSH dans votre ancien DNS public, la connexion se bloquera et expirera. Cela peut vous amener à supposer que quelque chose ne va pas avec votre EC2 ou votre groupe de sécurité ou ... Non, juste SSH dans le nouveau DNS. Et mettez à jour votre ~/.ssh/configfichier si nécessaire!

dslosky
la source
Une heure pour résoudre mes problèmes de délai d'expiration et c'était la solution. Merci :)
Eric
2
Merci beaucoup @dslosky, vous m'avez sauvé la vie. :)
A_01
13

Pour vous connecter, utilisez ssh comme ceci:

ssh -i keyname.pem [email protected]

keyname.pemest le nom de votre clé privée, usernameest le nom d'utilisateur correct pour votre distribution OS et xxx.xx.xxx.xxest l'adresse IP publique.

Lorsqu'il expire ou échoue, vérifiez les points suivants:

Groupe de sécurité

Assurez-vous d'avoir une règle d'entrée pour le port TCP 22 et pour tous les ips ou votre ip. Vous pouvez trouver le groupe de sécurité via le menu ec2, dans les options de l'instance.

Table de routage

Pour un nouveau sous-réseau dans un vpc, vous devez passer à une table de routage qui pointe 0.0.0.0/0 vers la cible de la passerelle Internet . Lorsque vous créez le sous-réseau dans votre vpc, il attribue par défaut la table de routage par défaut, qui n'accepte probablement pas le trafic entrant d'Internet. Vous pouvez modifier les options de la table de routage dans le menu vpc, puis dans les sous-réseaux.

IP élastique

Pour une instance dans un vpc, vous devez attribuer une adresse IP élastique publique et l'associer à l'instance. L'adresse IP privée n'est pas accessible de l'extérieur. Vous pouvez obtenir une adresse IP élastique dans le menu ec2 (pas dans le menu instance).

Nom d'utilisateur

Assurez-vous que vous utilisez le bon nom d'utilisateur . Ce devrait être l'un des ec2-userou rootou ubuntu. Essayez-les tous si nécessaire.

Clé privée

Assurez-vous d'utiliser la bonne clé privée (celle que vous téléchargez ou choisissez lors du lancement de l'instance). Cela semble évident, mais le copier-coller m'a eu deux fois.

AJcodez
la source
1
Merci pour cela, j'oublie toujours d'ajouter la cible 0.0.0.0/0 à la passerelle Internet lorsque je crée un nouveau VPC
Chathushka
7

Avez-vous regardé la sortie de la console de l'instance? Vous pouvez le faire via la console AWS (Instances -> Cliquez avec le bouton droit sur l'instance -> Obtenir le journal système). J'ai eu des occasions où les services réseau sur une instance EC2 n'ont pas pu démarrer correctement, entraînant des connexions SSH expirées; le redémarrage de l'instance corrigeait généralement les choses.

gareth_bowles
la source
3

entrez la description de l'image ici

APRÈS 2 HEURES, J'AI TROUVÉ CECI

Notez que ssh ip 120.138.105.251/32

  • N'EST PAS ADRESSE IP de l'instance aws

  • Ce n'est pas votre adresse IP locale 127.0.0.1

  • Ce n'est pas votre adresse IP locale localhost

MAIS MAIS MAIS

C'est votre adresse IP publique de votre ordinateur personnel à partir duquel vous essayez d'accéder à l'instance aws

  1. Allez sur https://www.whatismyip.com/ quelle que soit l'adresse IP mise dans ssh

SI VOUS VOULEZ OUVRIR COMPLÈTEMENT SSH À TOUTES LES ADRESSE IP entrez la description de l'image ici

VOICI À QUOI SONT LES INSCRIPTIONS COMPLÈTEMENT ACCESSIBLES - DE BASE RECOMMANDÉ entrez la description de l'image ici

C'EST CE QUE J'UTILISE EN PRODUCTION entrez la description de l'image ici

vijay
la source
2

Voici les problèmes possibles:

  • Le plus probable est que le groupe de sécurité n'est pas configuré correctement pour fournir un accès SSH sur le port 22 à votre adresse IP.Le changement de paramètre de sécurité ne nécessite pas un redémarrage du serveur pour qu'il soit en vigueur.

  • La configuration du pare-feu local n'autorise pas l'accès SSH au serveur. (vous pouvez essayer une connexion Internet différente, votre téléphone / dongle pour l'essayer)

  • Le serveur n'est pas démarré correctement (les contrôles d'accès échoueront même sur la console Amazon), auquel cas vous devrez arrêter et démarrer le serveur.

pradosh nair
la source
Dans mon cas, c'était un problème de pare-feu sur le réseau sur lequel je travaille. Utiliser un VPN pour contourner cela a fonctionné.
MDave
1

Consultez cette page d'aide sur les documents AWS:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshootingInstancesConnectionTimeout Vous y trouverez probablement votre solution. pour moi, cette partie a fait le correctif:

[EC2-VPC] Vérifiez la table de routage du sous-réseau. Vous avez besoin d'une route qui envoie tout le trafic destiné à l'extérieur du VPC à la passerelle Internet du VPC.

  • Ouvrez la console Amazon VPC à l' adresse https://console.aws.amazon.com/vpc/ .

  • Dans le volet de navigation, choisissez Passerelles Internet. Vérifiez qu'une passerelle Internet est connectée à votre VPC. Sinon, choisissez Créer une passerelle Internet et suivez les instructions pour créer une passerelle Internet, sélectionnez la passerelle Internet, puis choisissez Attacher au VPC et suivez les instructions pour l'attacher à votre VPC.

  • Dans le volet de navigation, choisissez Sous-réseaux, puis sélectionnez votre sous-réseau.

  • Dans l'onglet Table de routage, vérifiez qu'il existe une route avec 0.0.0.0/0 comme destination et la passerelle Internet pour votre VPC comme cible. Sinon, choisissez l'ID de la table de routage (rtb-xxxxxxxx) pour accéder à l'onglet Routes de la table de routage, choisissez Modifier, Ajouter une autre route, entrez 0.0.0.0/0 dans Destination, sélectionnez votre passerelle Internet à partir de Target, puis choisissez Enregistrer.

Mais je vous suggère de vérifier toutes les options couvertes par le lien ci-dessus, vous y trouverez peut-être un ou plusieurs problèmes.

Meltzer
la source
1

Mon problème - J'ai eu le port 22 ouvert pour "Mon IP" et j'ai changé la connexion Internet et le changement d'adresse IP causé. J'ai donc dû le changer.

smDev
la source
1

En vous basant sur @ted.straussla réponse, vous pouvez sélectionner SSHet MyIPdans le menu déroulant au lieu de naviguer vers un site tiers.

Adam J. Gramling
la source
1

Redémarrez simplement l'instance Ec2 une fois que vous avez appliqué les règles

Shaz
la source
1

Autorisez ssh et le port 22 depuis ufw, puis activez-le et vérifiez avec la commande status

sudo ufw allow ssh
sudo ufw allow 22
sudo ufw enable
sudo ufw status
Jagannath Swarnkar
la source
0

Encore une possibilité. Les groupes de sécurité AWS sont configurés pour fonctionner uniquement avec des adresses IP entrantes spécifiques. Si votre groupe de sécurité est configuré de cette manière, vous (ou le titulaire du compte) devrez ajouter votre adresse IP au groupe de sécurité. Pour cela, ouvrez votre tableau de bord AWS, sélectionnez des groupes de sécurité, sélectionnez un groupe de sécurité et cliquez sur l'onglet entrant. Ajoutez ensuite votre adresse IP selon le cas.

LA Ferguson
la source
0

J'ai eu le même problème, et la solution permettait d'accéder de n'importe où à la liste des règles entrantes dans le groupe de sécurité actif. Dans la boîte de dialogue entrante, entrez 22 dans la plage de ports, n'importe où dans le champ source, et sélectionnez «ssh» dans la liste déroulante.

PS: Ce n'est peut-être pas la solution recommandée car cela signifie que cette instance peut être ssh'ed à partir de n'importe quelle machine, mais je n'ai pas pu la faire fonctionner avec mon IP locale.

Yahya
la source
0

J'ai eu un problème similaire, lorsque j'utilisais le Wifi public, qui n'avait pas de mot de passe. Le basculement de la connexion Internet vers une connexion sécurisée a résolu le problème.

Bharat Ram
la source
0

Si l'accès SSH ne fonctionne pas pour votre instance EC2, vous devez vérifier:

  • Le groupe de sécurité de votre instance autorise l' accès SSH entrant (vérifiez: afficher les règles ).

Si vous utilisez une instance VPC (votre ID VPC et votre ID de sous - réseau sont associés à votre instance), vérifiez:

  1. Dans le tableau de bord VPC, recherchez l'ID de sous-réseau utilisé qui est associé à votre VPC.
  2. Vérifiez sa table de routage jointe qui devrait avoir 0.0.0.0/0comme destination et votre passerelle Internet comme cible.

Sous Linux, vous pouvez également vérifier les informations de route dans le journal système dans la mise en réseau de l'instance, par exemple:

++++++++++++++++++++++++++++++++++++++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   |
+-------+-------------+------------+---------------+-----------+-------+

où les UGdrapeaux vous montrent votre passerelle Internet.

Pour plus de détails, consultez: Dépannage de la connexion à votre instance sur Amazon docs.

Kenorb
la source
0

Pour activer l'accès SSH à partir d'Internet pour les instances d'un sous-réseau VPC, procédez comme suit:

  • Attachez une passerelle Internet à votre VPC.
  • Assurez-vous que la table de routage de votre sous-réseau pointe vers la passerelle Internet.
  • Assurez-vous que les instances de votre sous-réseau ont une adresse IP unique au monde (adresse IPv4 publique, adresse IP Elastic ou adresse IPv6).
  • Assurez-vous que le contrôle d'accès au réseau (au niveau du VPC) et les règles de groupe de sécurité (au niveau ec2) permettent au trafic pertinent de circuler vers et depuis votre instance. Assurez-vous que l'adresse IP publique de votre réseau est activée pour les deux. Par défaut, Network AcL autorise tout le trafic entrant et sortant sauf explicitement configuré autrement
Innocent Anigbo
la source
0

Pour moi, c'était le serveur Apache hébergé sur une instance t2.micro linux EC2, pas l'instance EC2 elle-même.

Je l'ai corrigé en faisant:

sudo su

service httpd restart

Gus
la source
0

J'ai eu le même problème et je l'ai résolu en ajoutant une règle aux groupes de sécurité

SSH entrant 0.0.0.0/0

Ou vous pouvez ajouter votre adresse IP uniquement

Majali
la source
0

Pour moi, c'était que j'avais tout supprimé du volume de démarrage. Et ne pouvait plus se connecter à l'instance.

t_sologub
la source
0

Je travaillais sur l'instance et tout allait bien, le jour suivant, lorsque j'ai essayé de SSH dans mon instance, cela disait - Délai de connexion.

J'ai essayé de parcourir ce post mais rien n'a fonctionné. Alors j'ai fait -

Dans la Edit inbound rulescolonne de source, choisissez MY IPet il remplira automatiquement votre adresse IP publique au format CIDR ( XXX.XXX.XXX.XX/32).

J'ai essayé avec la réponse @ ted.strauss en donnant l'adresse IP locale mais cela n'a pas aidé dans mon cas. J'ai donc choisi MON IP et cela a fonctionné.

J'espère que cela aide quelqu'un!

rbashish
la source
0

envoyez d'abord un ping au DNS. En cas d'échec, configurez vos règles entrantes / sortantes dans l'assistant de lancement. configurez TOUT le trafic et TOUT le protocole et enregistrez simplement avec les options par défaut. Ping à nouveau avec votre système local et devrait ensuite fonctionner

Jeune fille
la source
0

Si vous venez de créer une nouvelle instance et que vous ne pouvez pas vous y connecter, j'ai pu résoudre le problème en mettant fin à celle-ci et en en créant une nouvelle. Bien sûr, cela ne fonctionnera que s'il s'agit d'une nouvelle instance et que vous n'avez plus travaillé dessus.

José Del Valle
la source