Puis-je SSH dans mon instance de serveur Amazon EC2 si je n'ai pas de fichier .pem depuis la création de l'instance?

10

Je travaille avec certains serveurs Amazon EC2 qui sont opérationnels et j'ai besoin de SSH dans les serveurs. Je n'ai aucune clé générée lors de la première configuration des serveurs (quelqu'un d'autre l'a fait bien avant mon arrivée). Puis-je toujours accéder aux serveurs sans les fichiers de clés?

FWIW Jusqu'à présent, j'ai essayé beaucoup de choses pour SSH dans la boîte, y compris la génération de nouvelles paires de clés dans le tableau de bord EC2, et rien ne semble fonctionner. Ce message de support Amazon AWS et cette réponse semblent indiquer que je n'ai pas de chance, sauf si je veux créer une AMI de mon serveur actuel, puis l'utiliser pour instancier une toute nouvelle instance de serveur EC2 (juste pour obtenir le fichier .pem généré à ce moment-là). Est-ce vraiment la seule façon de rentrer dans la boîte à ce stade?!

Eric
la source

Réponses:

26

En bref: oui, vous pouvez, mais pas sans travail.

Vous devrez effectuer les opérations suivantes:

(Pour ces étapes, supposez que la machine à laquelle vous rencontrez des problèmes de connexion s'appelle serveur-01.)

Tout d'abord, avant de commencer ces étapes, prenez un instantané de votre serveur.

  1. Démarrez une nouvelle instance temporaire. Appelez-le serveur-02.
  2. Arrêtez le serveur-01. Ne le mettez pas fin, arrêtez-le.
  3. /Déconnectez le volume EBS root ( ) du serveur-01 et attachez-le au serveur-02 comme, par exemple /dev/sdb.
  4. Connectez - vous à serveur-02, et exécutez: $ mkdir /mnt/temp && mount /dev/sdb /mnt/temp. Cela montera la partition racine du serveur-01 dans le serveur (temporaire)-02.
  5. Vous devriez maintenant pouvoir: $ vi /home/<user>/.ssh/authorized_keyset copier / coller dans votre clé publique. Lorsque vous avez fait cela, enregistrez et fermez le fichier.
  6. Maintenant, exécutez: $ cd / && umount /mnt/temppour démonter la partition racine de server-01 à partir de server-02.
  7. Maintenant, il suffit de déconnecter ce volume du serveur-02, de le rattacher au serveur-01, puis de démarrer le serveur-01. Au démarrage, vous devriez pouvoir à nouveau vous connecter.
EEAA
la source
2
Juste pour ajouter à cette excellente réponse, j'ai trouvé cet article de blog qui explique comment le faire à partir de la ligne de commande. alestic.com/2011/02/ec2-fix-ebs-root
Eric
1

Juste un conseil avant que quiconque essaie la réponse d' EEAA ,

Si vous n'avez pas exécuté la commande iptables saveou iptables-savepour enregistrer vos configurations, redémarrez simplement le serveur. Citant cette réponse sur AskUbuntu , j'ai appris que iptablesenregistre vos configurations dans la RAM elle-même, sauf si vous l'enregistrez explicitement dans les fichiers de configuration.

Les instances EC2 peuvent être facilement redémarrées à partir du tableau de bord EC2 ou aws-cli

retr0
la source
Umm, cela ressemble à une réponse à une autre question posée par erreur ici. Il n'y a rien sur le pare-feu / iptables dans cette question.
kubanczyk
Mon mauvais, cette réponse est pour quand tout le trafic est bloqué vers un serveur si toutes les adresses IP sont bloquées. Faites-moi savoir si elle doit être retirée.
retr0