comment SSH à EC2 sans utiliser explicitement la clé pem?

21

J'ai une fenêtre comme OS principal. À l'aide de VMware Player, j'ai configuré un serveur Ubuntu 12.4 en tant qu'ordinateur invité. Le serveur Ubuntu a un utilisateur "ubuntu".

J'ai créé une nouvelle instance EC2 + clé d'installation pem. Depuis la machine Windows, lorsque j'utilise la clé putty + pem - je peux ssh.

J'ai ajouté la clé pem à mon serveur VMware Ubuntu (/home/ubuntu/.ssh/) De plus, j'ai défini les autorisations suivantes: chmod 700 /home/ubuntu/.ssh chmod 600 /home/ubuntu/.ssh/*

Via le serveur Ubuntu - j'ai essayé de SSH à l'instance EC2 sans succès: ssh ubuntu@EC2_IP Permission denied (publickey) . Si j'utilise explicitement la clé pem, cela fonctionne: ssh -i /home/ubuntu/.ssh/NAME.pem ubuntu@EC2_IP - Veuillez noter que je dois utiliser le chemin d'accès direct à la clé, sinon, j'obtiendrai Warning: Identity file NAME.pem not accessible: No such file or directory. Permission denied (publickey).

S'il vous plaît donnez votre avis. Merci!

user798562
la source

Réponses:

18

Par défaut , le client SSH recherchera des clés nommées id_rsa, id_dsaet id_ecdsadans ~/.ssh/. Si votre clé n'est pas nommée ainsi, vous devez soit la spécifier sur la ligne de commande avec -icomme vous l'avez fait, soit la spécifier dans la configuration du client.

Vous pouvez ajouter quelque chose comme ceci pour ~/.ssh/configsélectionner automatiquement cette clé lors de la connexion SSH à EC2:

Host *.compute-1.amazonaws.com
    IdentityFile ~/.ssh/ec2_rsa
mgorven
la source
18

Ajouter la clé pem EC2 à SSH

ssh-add ~ / .ssh / KEY_PAIR_NAME.pem

nadavkav
la source
Vous devrez peut-être démarrer l'agent d'authentification: eval 'ssh-agent -s'
douglaslps
2

Comment nommez-vous votre clé privée? Il doit avoir le nom de fichier id_rsa par défaut (renommer le fichier pem en /home/ubuntu/.ssh/id_rsa)

Andrei Mikhaltsov
la source
il a appelé eldad.pem (nom par défaut d'AWS). Je l'ai renommé id_rsa et cela a fonctionné. existe-t-il un moyen de le conserver dans le nom actuel et de l'utiliser quand même?
user798562
Oui, Daniel a déjà écrit à ce sujet dans sa réponse :)
Andrei Mikhaltsov
1

Vous pouvez utiliser ssh-agentet ssh-addpour éviter d'avoir à spécifier explicitement la clé privée.

Vous pouvez mettre les commandes dans votre .profileou .bashrcelles sont exécutées à chaque fois que vous vous connectez. Vous pouvez trouver un exemple de script de démarrage au bas de cet article .

David Levesque
la source
C'est ce que j'ai fait, mais quand je redémarre, je dois recommencer. Comment éviter cela?
user798562
Modifié ma réponse pour l'inclure.
David Levesque
0

Le client ssh recherche en identify filefonction de la configuration définie dans /etc/ssh/ssh_config. Vous pouvez donc y spécifier le fichier d'identité et n'oubliez pas que plusieurs fichiers d'identité peuvent être répertoriés dans le fichier de configuration du client ssh. Depuis la page de manuel de ssh -

    -i identity_file
         Selects a file from which the identity (private key) for public key authentication is read.  The default is ~/.ssh/identity
         for protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa and ~/.ssh/id_rsa for protocol version 2.  Identity files may also
         be specified on a per-host basis in the configuration file.  It is possible to have multiple -i options (and multiple identiâ
         ties specified in configuration files).

Pour la clé RSA, par exemple, l'emplacement par défaut est ~ / .ssh / id_rsa. Comme l'a suggéré Andrei Mikhaltsov, vous pouvez placer votre clé privée dans / home / ubuntu / ssh / id_rsa et vous pourrez vous connecter sans le spécifier sur la ligne de commande. Si ce nom de fichier existe déjà et contient une autre clé privée, vous pouvez toujours personnaliser votre fichier de configuration du client ssh au IdentityFileparamètre.

Daniel t.
la source