Accès SSH à une instance Amazon EC2 : comment faire face à l'erreur Permission denied (publickey) ?

Si vous souhaitez vous connecter à une instance d'Amazon EC2 avec SSH, vous pouvez obtenir l'erreur suivante Permission denied (publickey). Cette erreur a plusieurs causes connues qui ont chacune leur solution.

Les premiers éléments à vérifier lors de la connexion sont la clé et l'hôte. Vérifiez bien que l'instance utilise la même paire de clés que celle que vous avez renseignée. Vérifiez également que le fichier contenant les clés est correctement écrit. Pour l'hôte, vérifiez que votre instance est bien disponible avec cette adresse.Si vous utilisez le système Ubuntu dans votre instance, il est nécessaire de modifier les droits du fichier des clés avant de lancer la connexion SSH. Pour cela, utilisez la commande suivante :chmod 600 ec2-keypair.pem

Pour vous connecter à l'instance d'Amazon EC2, vous devez d'abord ajouter la clé à la connexion. Pour cela, la commande utilisée est la suivante :ssh-add ~/.ssh/[adresse du fichier de clé]Dès lors on peut lancer la connexion :ssh ec2-user@[Adresse ip de l'instance EC2]Si vous fermez votre terminal entre ces 2 commandes, il est nécessaire de refaire la commande ssh -add, car cette commande ne fonctionne que pour une instance de terminal. Si vous ne le faites pas, vous obtiendrez le message d'erreur. Pour éviter ce risque d'erreur, la commande ssh-add peut être remplacée par l'option -i pour la commande ssh. De cette manière, on ne lance qu'une seule commande qui ajoute le fichier de clé puis lance la connexion :ssh -i ~/.ssh/[adresse du fichier de clé] ec2-user@[Adresse ip de l'instance EC2]

Une autre source d'erreur importante est le nom d'utilisateur utilisé dans la commande de connexion. Pour la majorité des systèmes d'exploitation, le nom d'utilisateur ec2-user, mais ce n'est pas le cas pour tous. Si vous vous connectez à une instance utilisant le système d'exploitation Ubuntu, le nom d'utilisateur est ubuntu. Pour Fedora, les noms fedora et ec2-user fonctionnent. Pour les systèmes d'exploitation SUSE, on utilise le nom d'utilisateur root. De manière générale, si les noms ec2-user et root ne fonctionnent pas, il faut vous renseigner auprès de votre fournisseur de machine virtuelle.

Divers