J'ai une instance amazon ec2 linux en cours d'exécution associée à une paire de clés (p1) et j'ai téléchargé la clé privée sur mon bureau à domicile. Maintenant au travail, j'ai créé une paire de clés (p2) sur mon bureau de travail et importé la clé publique sur Amazon via la console AWS.
À la maison, je souhaite ajouter la clé publique de keypair p2 à ajouter à authorized_keys
mon instance AMI (à laquelle je ne peux actuellement accéder que depuis la maison). Cependant, j'ai oublié d'apporter la clé publique de p2 avec moi, il est donc possible d'exporter cette clé publique d'Amazon.
La commande ssh-keygen correcte est cependant:
la source
chmod 400 your_private_key.pem
si vous obtenez "Les autorisations sont trop ouvertes erreur"J'ai déjà fourni une réponse qui utilise des volumes EBS pour accéder à la clé publique ssh, mais voici une autre façon d'y accéder en démarrant une instance EC2 temporaire avec un script de données utilisateur qui envoie la clé publique à la sortie de la console. Voici les étapes:
Enregistrez le code suivant dans un fichier nommé
output-ssh-key.userdata
sur votre ordinateur local. NE PAS EXÉCUTER CES COMMANDES LOCALEMENT!Exécutez une instance stock Ubuntu 10.04 LTS avec le fichier ci-dessus en tant que script de données utilisateur. Spécifiez la paire de clés pour laquelle vous souhaitez récupérer la clé publique ssh:
Continuez à demander la sortie de la console à l'instance jusqu'à ce qu'elle affiche votre clé publique ssh. Spécifiez l'ID d'instance renvoyé par la commande run-instances:
Dans les 2 à 10 minutes, vous obtiendrez une sortie comme celle-ci:
L'instance temporaire se terminera automatiquement en moins d'une heure, mais vous pouvez la terminer vous-même si vous souhaitez vous assurer que vous n'êtes pas facturé plus que les deux cents que cela coûtera pour fonctionner.
la source
Si vous avez la clé SSH privée, vous pouvez régénérer le composant de clé publique en exécutant simplement la commande ssh-keygen suivante :
C'est la partie simple ... La console AWS et l'API ne prennent pas en charge la pression de 2 paires de clés lors du démarrage d'une instance EC2. Il s'agit d'un exercice laissé à l'administrateur système par d'autres moyens.
Si vous avez accès à la clé d'identité déjà autorisée, vous pouvez simplement exécuter la commande ssh-copy-id suivante :
Cela copiera la clé publique donnée sur le serveur et dans le
~user/.ssh/authorized_keys
fichier automatiquement pour vous et garantira les autorisations appropriées sur le fichier.La manière la plus élégante serait d'inclure les clés d'identité supplémentaires dans vos processus de gestion de configuration. Dans mon cas, cela implique l'ajout de clés supplémentaires à la configuration Puppet pour le nœud.
En guise de remarque, la préférence personnelle, mais utiliserait une meilleure méthode de gestion des clés SSH que le simple fait d'inclure des clés distinctes pour le lieu de travail et le domicile. Comme je l'ai mentionné dans une question précédente, je conserve mes clés sur une clé USB que je garde avec moi plutôt que sur n'importe quel ordinateur que j'utilise.
la source
Une autre option serait d'ajouter un court script dans user_data qui ajoute juste une autre clé ssh à root:
Ensuite, vous pouvez vous connecter à la machine en tant que root avec
ssh -l root -i <KEYFILE> URL
et simplement lire la clé à partir des clés autorisées de l'utilisateur ec2_user, ubuntu ou comment elle est appelée.Seule chose - vous devez rendre la machine accessible au public et vous assurer que l'accès au port 22 est possible de l'extérieur.
la source