web-dev-qa-db-fra.com

Essayer de SSH dans une instance Amazon Ec2 - erreur d'autorisation

C'est probablement une question bêtement simple à certains :)

J'ai créé une nouvelle instance linux sur Amazon EC2 et téléchargé le fichier .pem afin de m'autoriser à SSH dans.

Quand j'ai essayé de ssh avec:

ssh -i myfile.pem <public dns>

J'ai eu:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'amazonec2.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: amazonec2.pem
Permission denied (publickey).

Après ce post j'ai essayé de chmod +600 le fichier pem, mais maintenant quand je ssh je viens de recevoir:

Permission denied (publickey).

Quelle erreur d'écolier est-ce que je fais ici? Le fichier .pem se trouve dans mon dossier personnel (sous osx). Ses autorisations ressemblent à ceci:

-rw-------@   1 mattroberts  staff    1696 19 Nov 11:20 amazonec2.pem
663
Matt Roberts

Le problème est d'avoir le mauvais mod sur le fichier.

Facilement résolu en exécutant -

chmod 400 mykey.pem

Tiré des instructions d'Amazon -

Votre fichier de clé ne doit pas être visible publiquement pour que SSH fonctionne. Utilisez cette commande si nécessaire: chmod 400 mykey.pem

1296
Kof

Vous utilisez probablement un mauvais nom d'utilisateur pour vous connecter:

  • la plupart des images Ubuntu ont un utilisateur ubuntu
  • L'AMI d'Amazon est ec2-user
  • la plupart des images Debian ont soit root ou admin

Pour vous connecter, vous devez ajuster votre commande ssh:

ssh -l USERNAME_HERE -i .ssh/yourkey.pem public-ec2-Host

HTH

253
Till

Je sais que c'est très tard dans le jeu ... mais cela toujours fonctionne pour moi:

étape 1

ssh-add ~/.ssh/KEY_PAIR_NAME.pem

étape 2, simplement ssh en :)

ssh user_name@<instance public dns/ip>

par exemple.

ssh [email protected]

espérons que cela aide quelqu'un.

59
user2838357

Ok mec, la seule chose qui a fonctionné pour moi a été:

  1. Changer les permissions de la clé

    chmod 400 mykey.pem

  2. Assurez-vous de vous connecter en utilisant ec2-user et l'adresse correcte ec2-99 .... L'adresse ec2-99 est au bas de la console aws lorsque vous êtes connecté et que votre instance est répertoriée.

    ssh -i mykey.pem [email protected]

37
bobobobo

Jetez un oeil à cet article . Vous n'utilisez pas le DNS public mais plutôt le formulaire

ssh -i your.pem [email protected]

où le nom est visible sur votre panneau AMI

27
renick

Modifier l'autorisation du fichier de clé avec:

chmod 400 key-file-name.pem

Consultez la documentation AWS pour la connexion à l'instance:

http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/EC2_GetStarted.html#EC2_ConnectToInstance_Linux

14
Ayush Goyal

Dans Windows, vous pouvez accéder aux propriétés du fichier PEM, à l’onglet Sécurité, puis au bouton Avancer.

supprimer l'héritage et toutes les autorisations. puis accordez-vous le contrôle total. Après tout, SSL ne vous donnera plus la même erreur.

9
Nadeeshan Herath

Dans le terminal Mac, faire "chmod 400 xyz.pem" ne m'a pas aidé, il a continué à dire que la permission était refusée. Pour les utilisateurs d'ubuntu, je suggère

  1. ssh-add xyz.pem
  2. ssh -i xyz.pem [email protected] (notez que l'utilisateur est ubuntu)
6
Himalay Majumdar

Je sais que cette question a déjà reçu une réponse, mais pour ceux qui les ont toutes essayées et que vous continuez d’obtenir l’ennuyeux "autorisation refusée (publickey)". Essayez d'exécuter votre commande avec Sudo. Bien sûr, il s’agit d’une solution temporaire et vous devez définir les autorisations correctement, mais au moins, cela vous permettra d’identifier que votre utilisateur actuel ne fonctionne pas avec les privilèges dont vous avez besoin (comme vous le supposiez).

Sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com

Une fois que vous faites cela, vous recevrez un message comme celui-ci:

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

Ce qui est également peu documenté. Dans ce cas, faites ceci:

Sudo ssh -i amazonec2.pem ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com -l ec2-user

Et vous aurez le glorieux:

   __|  __|_  )
   _|  (     /   Amazon Linux AMI
  ___|\___|___|
6
Ricardo Cid

Meilleures pratiques pour les clés SSH et les autorisations de fichiers:

  • Répertoire .ssh - 0700 (uniquement par le propriétaire)
  • clé privée/fichier .pem - 0400 (lecture seule par le propriétaire)
  • clé publique/fichier .pub - 0600 (lecture et écriture uniquement par le propriétaire)

    chmod XXXX file/directory

4
Ryan

En plus des autres réponses, voici ce que j'ai fait pour que cela fonctionne:

  • Copiez la clé dans le dossier .ssh si vous n'aviez toujours pas:

cp key.pem ~/.ssh/key.pem

  • Donnez les permissions appropriées à la clé

chmod 400 ~/.ssh/key.pem

eval `ssh-agent -s` ssh-add

  • Ensuite, ajoutez la clé

ssh-add ~/.ssh/key.pem

Vous devriez maintenant pouvoir utiliser ssh EC2 (:

3
Rodrigo Nantes

ssh -i /.pem utilisateur @ hôte-machine-IP

Je pense que c'est parce que vous avez entré de mauvaises informations d'identification ou que vous utilisez une clé publique plutôt que une clé privée ou que vos autorisations de port sont ouvertes pour ALL à SSH. C'est mauvais pour Amazon.

3
Syed Priom

Connexion alternative à l'aide de PuTTY. C'est bon mais nécessite quelques pas.

  1. Obtenez votre .pem généré lors de la création initiale de l'instance EC2.
  2. Convertissez le fichier .pem .ppk en utilisant PuttyGen car PuTTY ne lit pas .pem.
  3. Ouvrez PuTTY et entrez votre nom d'hôte , qui est votre nom d'utilisateur d'instance + DNS public (Ex. [email protected]. compute.amazonaws.com). Pas votre nom d'utilisateur de compte AWS.
  4. Ensuite, accédez à Connexion> SSH> Auth . Ajoutez ensuite votre fichier . Ppk . Cliquez sur Parcourir où il est indiqué "Fichier de clé privée pour authentification" .
  5. Cliquez sur Ouvrir et vous devriez pouvoir établir immédiatement une connexion.

J'utilise PuTTY 0.66 sous Windows.

3
jarvis

Le problème pour moi était que mon fichier .pem se trouvait dans l'une de mes partitions NTFS. Je l'ai déplacé sur ma partition Linux (ext4).

A donné les autorisations requises en exécutant:

chmod 400 my_file.pem

Et ça a marché.

2
Rishabh Agrahari

Il peut y avoir trois raisons derrière cette erreur.

  1. Vous utilisez une mauvaise clé.
  2. Votre clé ne dispose pas des autorisations appropriées. Vous devez le chmod à 400.
  3. Vous utilisez le mauvais utilisateur. Les images Ubuntu ont un utilisateur bunt, l'AMI d'Amazon est ec2-user et les images debian ont soit racine ou admin
2
Jagatveer Singh

Faites un chmod 400 yourkeyfile.pem Si votre instance est Amazon linux, utilisez ssh -i votrefichier.pem ec2-user @ ip pour ubuntu ssh -i votrefichier.pem ubuntu @ ip pour centos ssh -i votrefichier.pem centos @ ip

2
sathee005

Le fichier de clé ne doit pas être visible publiquement, utilisez donc l'autorisation 400

chmod 400 keyfile.pem

Si la commande ci-dessus montre l'utilisation de l'erreur de permission

Sudo chmod 400 keyfile.pem

Maintenant ssh dans la machine ec2, si vous faites toujours face au problème, utilisez ec2-user

ssh -i keyfile.pem [email protected]

1
singh30

Il suffit de changer l’autorisation du fichier pem en 0600 n’autorisant que l’utilisateur autorisé et cela fonctionnera comme un charme.

Sudo chmod 0600 myfile.pem

Et puis essayez de ssh ça fonctionnera parfaitement.

ssh -i myfile.pem <<ssh_user>>@<<server>>
1
Prash

Liste de contrôle:

  1. Utilisez-vous le bon fichier .pem de clé privée?

  2. Ses autorisations sont-elles correctement définies? (Les AMI d'Amazon sont compatibles avec 644, mais Red Hat doit compter au moins 600 ou 400. Je ne connais pas Ubuntu.)

  3. Utilisez-vous le bon nom d'utilisateur dans votre ligne ssh? Amazon-branded = "ec2-user", Red Hat = "racine", Ubuntu = "ubuntu". L'utilisateur peut être spécifié en tant que "ssh -i nom d'utilisateur pem @ nomhôte" OR "ssh -l nomutilisateur -i nomhôte pem"

1
fivedogit

Par défaut, les autorisations n'autorisent pas la clé pem. Il vous suffit de changer l'autorisation:

chmod 400 xyz.pem

et si instance Ubuntu puis connectez-vous en utilisant:

ssh -i xyz.pem [email protected]

1
rahul kumar

Eh bien, en regardant votre description de poste, je pense que vous avez commis 2 erreurs: -

  1. Définissez les autorisations correctes pour la clé privée . La commande ci-dessous devrait vous aider à définir la permision de fichier correcte.

    chmod 0600 mykey.pem

  2. Mauvais utilisateur ec2 que vous essayez de vous connecter .

    En regardant votre journal de débogage, je pense que vous avez créé une instance Amazon Linux. L'utilisateur par défaut pour ce type d'instance est ec2-user. Si l'instance avait été ubuntu, votre utilisateur par défaut aurait été ubuntu.

    ssh -i privatekey.pem default_ssh_user@server_ip

Note:
   For an Amazon Linux AMI, the default user name is ec2-user.

   For a Centos AMI, the default user name is centos.

   For a Debian AMI, the default user name is admin or root.

   For a Fedora AMI, the default user name is ec2-user or Fedora.

   For a RHEL AMI, the default user name is ec2-user or root.

   For a SUSE AMI, the default user name is ec2-user or root.

   For an Ubuntu AMI, the default user name is ubuntu.

   Otherwise, if ec2-user and root don't work, check with the AMI provider.

source: https://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html

1

Votre clé ne doit pas être visible publiquement pour que SSH fonctionne. Utilisez cette commande si nécessaire:

chmod 400 Interview-apps.pem

Connect to your instance using its Public DNS:

ec2-**-***-***-***.us-west-2.compute.amazonaws.com

Exemple:

ssh -i "Interview-apps.pem" ec2-user@ec2-**-***-***-***.us-west-2.compute.amazonaws.com
0
BigData-Guru

Voici les étapes simples permettant à l'utilisateur Linux de se connecter au serveur à l'aide du fichier .pem:

Étape 1: Accédez à l'emplacement du fichier pem et copiez-le dans l'emplacement .ssh d'origine.

cp example.pem ~/.ssh/example.pem

Étape 2: Modifier l'autorisation

chmod 400 ~/.ssh/example.pem

Étape 3: Exécutez la commande suivante

ssh -i ~/.ssh/example.pem [email protected]

Comme cette commande est trop longue, vous devriez en créer un alias en utilisant les commandes suivantes:

 vim ~/.bashrc

Écrivez la même commande de la manière suivante à la fin.

alias sshConnect='ssh -i ~/.ssh/example.pem [email protected]'

Maintenant, redémarrez votre système et utilisez sshConnect pour vous connecter à votre serveur.

0
Ajai

J'ai vu deux raisons derrière ce problème

1) La clé d'accès ne dispose pas de l'autorisation appropriée. Les clés pem avec autorisation par défaut ne sont pas autorisées à établir une connexion sécurisée. Il vous suffit de changer l'autorisation:

chmod 400 xyz.pem

2) Vérifiez également si vous vous êtes connecté avec les informations d'identification de l'utilisateur appropriées. Sinon, utilisez Sudo lors de la connexion

Sudo ssh -i {fichier_fichier} ec2-user @ {adresse ip de l'hôte distant}

0
Abhijit Barua

C'est juste un problème de permission avec votre clé aws pem.

Il suffit de changer la permission de pem key à 400 en utilisant la commande ci-dessous.

chmod 400 pemkeyname.pem

Si vous n'avez pas la permission de changer la permission d'un fichier, vous pouvez utiliser Sudo comme ci-dessous.

Sudo chmod 400 pemkeyname.pem

J'espère que cela devrait bien fonctionner.

0
Deepak N

Ce qui a résolu le problème pour moi était de déplacer le fichier .pem dans le répertoire des applications. Soo say fooapp est le nom de mon application. Je l'ai placé directement là-bas.

0
Nick Res