web-dev-qa-db-fra.com

Autorisation refusée (publickey) lorsque l'accès SSH à l'instance Amazon EC2

Je souhaite utiliser mon instance Amazon ec2 mais j'ai rencontré l'erreur suivante: 

Permission denied (publickey).

J'ai créé ma paire de clés et téléchargé le fichier .pem .

Donné: 

chmod  600 pem file.

Ensuite, cette commande

ssh -i /home/kashif/serverkey.pem  [email protected]

Mais avoir cette erreur:

Permission denied (publickey)

Aussi, comment puis-je me connecter avec filezilla pour télécharger/télécharger des fichiers?

355
Kashiftufail

Ce message d'erreur signifie que vous n'avez pas réussi à vous authentifier. 

Ce sont des raisons courantes qui peuvent causer que:

  1. Essayer de se connecter avec la mauvaise clé. Êtes-vous sûr que cette instance utilise cette paire de clés?
  2. Essayer de se connecter avec un mauvais nom d'utilisateur. ubuntu est le nom d'utilisateur de la distribution AWS basée sur Ubuntu, mais sur d'autres, c'est ec2-user (ou admin sur certaines Debian, selon la réponse de Bogdan Kulbida) (peut également être root, Fedora, voir ci-dessous) 
  3. Essayer de connecter le mauvais hôte. Est-ce le bon hôte auquel vous essayez de vous connecter?

Notez que 1. se produira également si vous avez modifié le fichier /home/<username>/.ssh/authorized_keys sur votre instance EC2. 

À propos de 2., les informations sur le nom d'utilisateur à utiliser sont souvent absentes de la description de l'image AMI. Mais vous pouvez en trouver dans la documentation AWS EC2, point 4.: http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html

Utilisez la commande ssh pour vous connecter à l'instance. Vous allez spécifier le fichier de clé privée (.pem) et le nom d'utilisateur @ nom_dns_public. Pour Amazon Linux, le nom d'utilisateur est ec2-user. Pour RHEL5, le nom d'utilisateur est root ou ec2-user. Pour Ubuntu, le nom d'utilisateur est ubuntu. Pour Fedora, le nom d'utilisateur est Fedora ou ec2-user. Pour SUSE Linux, le nom d'utilisateur est root. Sinon, si ec2-user et root ne fonctionnent pas, vérifiez auprès de votre fournisseur AMI.

Enfin, sachez qu’il existe de nombreuses autres raisons pour lesquelles l’authentification échouerait. SSH est généralement assez explicite sur ce qui ne va pas si vous souhaitez ajouter l’option -v à votre commande SSH et lire le résultat, comme expliqué dans de nombreuses autres réponses à cette question. 

589
Thibault D.

Dans ce cas, le problème provient de la perte de la paire de clés. À propos de ça:

  • Il n'y a aucun moyen de changer la paire de clés sur une instance. Vous devez créer une nouvelle instance utilisant une nouvelle paire de clés.
  • Vous pouvez contourner le problème si votre instance est utilisée par une application sur Elastic Beanstalk.

Vous pouvez suivre ces étapes:

  1. Accès à AWS Management Console
  2. Ouvrir Elastic Beanstalk Tab
  3. Sélectionnez votre application dans Toutes les applications Onglet
  4. Dans le menu de gauche, sélectionnez Configuration
  5. Cliquez sur le Instances Gear
  6. Dans Server Form, vérifiez l'entrée EC2 Key Pair et sélectionnez votre nouvelle paire de clés. Vous devrez peut-être actualiser la liste pour voir une nouvelle paire de clés que vous venez de créer.
  7. Sauvegarder
  8. Elastic Beanstalk créera pour vous de nouvelles instances associées à la nouvelle paire de clés.

En général, rappelez-vous que vous devez autoriser votre instance EC2 à accepter le trafic SSH entrant.

Pour ce faire, vous devez créer une règle spécifique pour le groupe de sécurité de votre instance EC2. Vous pouvez suivre ces étapes.

  1. Accès à AWS Management Console
  2. Ouvrir onglet EC2
  3. Dans la liste Instances, sélectionnez l’instance qui vous intéresse
  4. Dans l'onglet Description, cliquez sur le nom du groupe groupe de sécurité utilisé par votre instance.
  5. Encore une fois dans Onglet Description cliquez sur Voir les règles et vérifiez si votre groupe de sécurité a une règle pour le trafic SSH entrant sur le port 22
  6. Si non, dans Réseau & Sécurité menù sélectionnez Groupe de sécurité
  7. Sélectionnez le Groupe de sécurité utilisé par votre instance et le clic Onglet Entrant
  8. Sur la gauche de l'onglet Entrant, vous pouvez composer une règle pour le trafic entrant SSH:
    • Créer une nouvelle règle: SSH
    • Source: adresse IP ou sous-réseau de que vous voulez accéder à l'instance
    • Note: Si vous souhaitez accorder un accès illimité à votre instance, vous pouvez spécifier 0.0. 0.0/0 , bien que Amazon ne recommande pas cette pratique
  9. Cliquez sur Ajouter une règle puis sur Appliquer vos modifications
  10. Vérifiez si vous pouvez maintenant vous connecter à votre instance via SSH.

J'espère que cela peut aider quelqu'un comme m'a aidé.

48
Matteo Ceserani

Voici comment j'ai résolu le problème

ssh -i <key> ec2-user@<ec2 ip>
43
Deepti Kohli

J'ai résolu le problème en mettant simplement Sudo avant

Sudo ssh -i mykey.pem myec2.amazonaws.com

Mais la solution appropriée consiste à modifier d'abord le propriétaire, puis à vous connecter en tant qu'utilisateur normal, comme l'a dit Janus Troelsen ci-dessous. Dans mon cas ce serait:

chown wellington:wellington key.pem
26
Wellington Lorindo

Essayez d'utiliser

Sudo ssh -i mykey.pem ubuntu@<ec2_ip_public_dns>

OR

Sudo ssh -i mykey.pem ec2-user@<ec2_ip_public_dns>
23
Abhishek Gupta

Une autre cause possible de cette erreur:

Lorsque le répertoire home de l'utilisateur est accessible en écriture au groupe , l'utilisateur ne peut pas se connecter.

(Reproduit sur l'instance Ubuntu.)

22
Stepan

Vous devez suivre les étapes suivantes:

  1. Ouvrez votre client ssh ou votre terminal si vous utilisez Linux. 
  2. Localisez votre fichier de clé privée et changez votre répertoire. 
    cd <path to your .pem file>
  3. Exécutez les commandes ci-dessous:
    chmod 400 <filename>.pem 
    ssh -i <filename>.pem ubuntu@<ipaddress.com> 

Si l'utilisateur ubuntu ne fonctionne pas, essayez avec ec2-user.

7

pour l'instance micro ubuntu 12.04 lts je devais définir le nom d'utilisateur comme option 

ssh -i pemfile.pem -l ubuntu dns
7
dc10

Je me suis battu avec la même permission, erreur refusée apparemment en raison de 

key_parse_private2: missing begin marker 

Dans mon cas, la cause était le fichier de configuration ssh de l'utilisateur actuel (~/.ssh/config).

En utilisant ce qui suit:

ssh -i ~/myKey.pem ec2-user@<IP address> -v 'exit'

La sortie initiale montrait:

debug1: Reading configuration data /home/ec2-user/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 56: Applying options for *
debug1: Hostname has changed; re-reading configuration
debug1: Reading configuration data /home/ec2-user/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config

... de nombreuses lignes de débogage coupées ici ...

debug1: Next authentication method: publickey
debug1: Trying private key: /home/ec2-user/somekey.pem
debug1: key_parse_private2: missing begin marker
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.

La troisième ligne ci-dessus est l'endroit où le problème réel a été identifié; cependant, j'ai cherché dans le message de débogage quatre lignes en bas (ci-dessus) et j'ai été induit en erreur. Il n'y a pas de problème avec la clé mais je l'ai testée et comparée à d'autres configurations.

Le fichier de configuration ssh de mon utilisateur réinitialise l'hôte via un paramètre global non souhaité, comme indiqué ci-dessous. La première ligne d'hôte n'aurait pas dû être un commentaire.

$ cat config
StrictHostKeyChecking=no
#Host myAlias
        user ec2-user
        Hostname bitbucket.org
#        IdentityFile ~/.ssh/somekey
#        IdentitiesOnly yes

Host my2ndAlias
        user myOtherUser
        Hostname bitbucket.org
        IdentityFile ~/.ssh/my2ndKey
        IdentitiesOnly yes

J'espère que quelqu'un d'autre trouve cela utile.

5
Ben Paz

J'ai oublié d'ajouter le nom d'utilisateur (ubuntu) lors de la connexion de mon instance Ubuntu. Alors j'ai essayé ceci:

ssh -i /path/my-key-pair.pem my-ec2-instance.amazonaws.com

et la bonne façon était

ssh -i /path/my-key-pair.pem [email protected]
4
JohnP

Cela m'est arrivé plusieurs fois. J'ai utilisé Amazon Linux AMI 2013.09.2 et Ubuntu Server 12.04.3 LTS, tous deux situés sur le niveau libre. 

Chaque fois que j'ai lancé une instance, l'autorisation est refusée. Je n'ai pas vérifié cela, mais ma théorie est que le serveur n'est pas complètement configuré avant que j'essaye d'y installer SSH. Après quelques tentatives avec une autorisation refusée, j'attends quelques minutes, puis je peux me connecter. Si vous rencontrez ce problème, je suggère d'attendre cinq minutes et d'essayer à nouveau. 

3
Wade Anderson

la même chose m’est arrivée, mais tout ce qui se passait, c’est que la clé privée a été perdue du trousseau de ma machine locale.

ssh-add -K 

ré-ajouté la clé, puis la commande ssh pour se connecter est retournée au travail.

2
eiTan LaVi

Je suis sous Windows avec WINSCP. Cela fonctionne très bien sur l'explorateur de fichiers et le shell SSH PuTTY pour accéder à mon Amazon EC2-VPC Linux. Il n'y a rien à faire avec chmod pem file car il utilise myfile.ppkconverti by PuTTYgen du fichier pem.

2
Chetabahana

Dans mon propre cas, j'ai fait ce qui suit:

chmod 400 <key.pem>

ssh -i <key.pem> ec2-user@ec2_public_dns (for debian)

J'utilisais initialement la partie root@ et j'ai reçu l'invite suivante:

Please login as the user "ec2-user" rather than the user "root".
2
AJNinja

Voici un scénario frustrant pouvant générer cette erreur:

Si vous distribuez une nouvelle instance à partir d'une AMI créée d'une autre instance (par exemple, instance xyz), cette nouvelle instance n'acceptera que la clé utilisée par cette instance. Cela est tout à fait compréhensible, mais cela prête à confusion car lors du processus pas à pas de création de la nouvelle instance, il vous est demandé de sélectionner ou de créer une clé (à la dernière étape) qui ne fonctionnera pas. 

Quelle que soit la clé créée ou sélectionnée, seule la clé que vous utilisiez par exemple XYZ sera acceptée par la nouvelle instance.

2
Seeker

J'ai eu du mal avec cela pendant un moment aussi jusqu'à ce que j'ai trouvé ce qui suit:

eb ssh

Quand vous utilisez ça depuis le répertoire du projet, bingo-bango pas de problème, vous êtes dedans

2
JedA

Quand tu essaies de faire 

ssh -i <.pem path> root@ec2-public-dns

Vous recevez un message vous invitant à utiliser le ec2-user

Please login as the user "ec2-user" rather than the user "root".

Donc utiliser

ssh -i <.pem path> ec2-user@ec2-public-dns

1
Jerome Anthony

J'ai eu le même problème et c'est très étrange. Si vous pensez faire tout ce que vous faites, alors suivez ceci: Parfois, il y a confusion à propos de l'utilisateur pour l'instance EC2 !! Certaines fois, vous obtenez ec2-user, Ubuntu, Centos, etc. Vérifiez donc votre nom d'utilisateur pour la machie !!

Connexion avec l'utilisateur root ssh -i yourkey.pem (400 permission) root@<ip> Cela provoquera une erreur et vous donnera le nom d'utilisateur disponible . puis connectez-vous avec cet utilisateur.

1
Manoj Sahu

Ce problème peut être résolu en se connectant à Ubuntu à l'aide de la commande ci-dessous:

ssh -i ec2key.pem ubuntu@ec2-public-IP
1
Prajith

C'est une chose élémentaire, mais vérifiez toujours quel utilisateur vous essayez de vous connecter. Je suis mon cas était juste une distraction. J'essayais d'utiliser un utilisateur root:

ssh -i ~/keys/<key_name> [email protected]

Mais était un autre utilisateur:

ssh -i ~/keys/<key_name> [email protected]
1
Andre Araujo

j'ai eu la même erreur mais situation différente. pour moi, c'est arrivé à l'improviste après beaucoup de temps, je pouvais utiliser SSH avec succès sur mon ordinateur distant. Après beaucoup de recherches sur la solution à mon problème, il y avait les permissions de fichiers. c'est étrange bien sûr parce que je n'ai changé aucune permission sur mon ordinateur ou sur celui distant appartenant aux fichiers/répertoires de ssh. donc du bon archlinux wiki le voici: 

Pour la machine locale, procédez comme suit:

$ chmod 700 ~/
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/id_ecdsa

Pour la machine distante faire cela:

$ chmod 700 ~/
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

après cela, ma ssh a recommencé à fonctionner sans la permission refusée (publickey).

1
Elimelech

vous devez vérifier ces quelques choses:

  1. Assurez-vous que votre adresse IP est correcte 
  2. Assurez-vous que vous utilisez la bonne clé
  3. Assurez-vous que vous utilisez le bon nom d'utilisateur, vous pouvez essayer: 3.1. admin 3.2. ec2-utilisateur 3.3. Ubuntu

J'ai eu le même problème, et il a été résolu après que j'ai changé de nom d'utilisateur pour Ubuntu. Dans AWS, la documentation a été mentionnée à l'utilisateur ec2-user mais ne fonctionne pas pour moi d'une manière ou d'une autre.

1
Mehran

J'ai eu deux fois les clés et la ligne de commande ssh correctes (je sais parce que je suis en train de dupliquer une instance de travail d'Ubuntu 14.04), mais je n'ai simplement pas été en mesure de ssh dans une nouvelle instance, même après avoir attendu 5 minutes comme suggéré par Wade Anderson ci-dessus.

J'ai dû détruire et recréer la machine. Cela s'est produit à deux reprises. Puisque je ne peux pas entrer au début, je ne peux pas voir ce qui ne va pas.

Donc, si vous avez ce problème, essayez-le.

1
Greg Bell

Ma clé privée a été définie sur permission 400 et a pour résultat que l'autorisation refusée lui a été affectée.

key_load_private_type: Autorisation refusée est l'erreur spécifique que j'ai eu

Solution: Sudo chmod 644 <key.pem>

Remarque: réglé sur 644 est indispensable, il ne fonctionnait pas avec 400

1
Kuldeep Dangi

C'est sensible à la casse. 

Wrong: SSH EC2-user @XXX.XX.XX.XX -i MyEC2KeyPair.pem

Correct: SSH ec2-user @XXX.XX.XX.XX -i MyEC2KeyPair.pem

0
Tanmay

Autre problème possible: mauvais identifiant de connexion

Vérifiez les "Instructions d'utilisation"

Toutes les bonnes suggestions ci-dessus, mais ce que j’ai rencontré est que j’ai choisi un exemple déjà créé. Une fois l’instance démarrée, consultez les instructions d’utilisation. J'ai incorrectement utilisé l'identifiant de connexion de la clé privée lorsque j'étais censé utiliser 'bitnami' dans les instructions (par exemple, bitnami @ domain -i key.pem)

0
Mike Q

J'ai eu une erreur similaire

debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: xxxx.pem
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).

Mon problème était que l'instance n'a pas démarré correctement en raison d'une erreur sur le script d'exécution au démarrage à partir de Step 3: Configure instance detail sous Advanced details:

Ce que je pensais être entré:

#include
 https://xxxx/bootstrap.sh


Ce qui est réellement entré rompt la configuration de l'instance

#include

https://xxxx/bootstrap.sh

Donc, la clé publique côté instance n'a pas été créée

0
RNA