Essayer SSH dans une instance Amazon Ec2 – erreur de permission

C’est probablement une question bêtement simple pour certains 🙂

J’ai créé une nouvelle instance Linux sur Amazon EC2 et, dans le cadre de ce téléchargement, le fichier .pem pour me permettre d’accéder à SSH.

Quand j’ai essayé de ssh avec:

ssh -i myfile.pem  

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). 

Suite à 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 fais-je ici? Le fichier .pem se trouve dans mon dossier personnel (en osx). Ses permissions ressemblent à ceci:

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

Le problème est d’avoir un mod incorrect sur le fichier.

Facilement résolu en exécutant –

chmod 400 mykey.pem

Extrait 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

Vous utilisez probablement le mauvais nom d’utilisateur pour vous connecter:

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

Pour vous connecter, vous devez ajuster votre commande ssh:

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

HTH

Je sais que c’est très tard pour le jeu … mais ça marche toujours pour moi:

étape 1

 ssh-add ~/.ssh/KEY_PAIR_NAME.pem 

étape 2, simplement ssh dans 🙂

 ssh user_name@ 

par exemple

 ssh [email protected] 

J’espère que cela aide quelqu’un.

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

  1. Modifier les permissions de la clé

    chmod 400 mykey.pem

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

    ssh -i mykey.pem [email protected]

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

Modifier l’autorisation pour le fichier de clé avec:

 chmod 400 key-file-name.pem 

Voir la documentation AWS pour la connexion à l’instance:

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

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)

Je sais que cette question a déjà reçu une réponse, mais pour ceux qui les ont tous essayés et vous obtenez toujours la “permission refusée (publickey)” ennuyeuse. Essayez de lancer votre commande avec SUDO. Bien sûr, cette solution est temporaire et vous devez définir les permissions 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 l’avez supposé).

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

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

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

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 ___|\___|___| 

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

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

    chmod XXXX file/directory

ssh -i /.pem user @ host-machine-IP

Je pense que c’est parce que vous avez entré des identifiants incorrects ou que vous utilisez une clé publique plutôt qu’une clé privée ou que vos permissions de port sont ouvertes à tous pour ssh. C’est mauvais pour Amazon.

Connexion alternative utilisant PuTTY. C’est bien mais il faut quelques pas.

  1. Obtenez votre fichier .pem généré lors de la création de l’instance EC2.
  2. Convertir le fichier .pem .ppk en utilisant PuttyGen puisque PuTTY ne lit pas .pem.
  3. Ouvrez PuTTY et entrez votre nom d’hôte, qui correspond à votre nom d’utilisateur d’instance + DNS public (par exemple, [email protected]). 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 dit “Fichier de clé privée pour l’authentification” .
  5. Cliquez sur Ouvrir et vous devriez pouvoir établir immédiatement la connexion.

Im utiliser PuTTY 0.66 dans Windows.

Faire un chmod 400 yourkeyfile.pem Si votre instance est Amazon linux alors utilisez ssh -i votre fichierfichier.pem ec2-user @ ip pour ubuntu ssh -i votre fichierfichier.pem ubuntu @ ip pour centos ssh -i votre fichierfichier.pem centos @ ip

Il peut y avoir trois raisons à cette erreur.

  1. Vous utilisez une mauvaise clé.
  2. Votre clé ne dispose pas des permissions appropriées. Vous devez le modifier à 400.
  3. Vous utilisez le mauvais utilisateur. Les images Ubuntu ont un utilisateur ubuntu , l’AMI d’Amazon est ec2-user et les images debian ont soit root soit admin

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).

Autoriser les permissions requirejses en exécutant:

chmod 400 my_file.pem

Et ça a marché.

Liste de contrôle:

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

  2. Ses permissions sont-elles définies correctement? (Mes AMI d’Amazon fonctionnent avec 644, mais Red Hat doit avoir au moins 600 ou 400. Ne sait pas à propos d’Ubuntu.)

  3. Utilisez-vous le bon nom d’utilisateur dans votre ligne ssh? Amazon-branded = “ec2-user”, Red Hat = “root”, Ubuntu = “ubuntu”. L’utilisateur peut être spécifié comme “ssh -i pem usename @ hostname” OU “ssh -l nom_utilisateur -i pem hostname”

Changez simplement la permission du fichier pem à 0600 en ne permettant qu’à l’utilisateur autorisé et cela fonctionnera comme un charme.

 sudo chmod 0600 myfile.pem 

Et puis essayez de ssh cela fonctionnera parfaitement.

 ssh -i myfile.pem <>@<> 

L’autorisation BY par défaut n’autorise pas la clé pem. Il suffit de changer la permission:

chmod 400 xyz.pem

et si l’instance d’ubuntu se connecte alors en utilisant:

ssh -i xyz.pem [email protected]

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 ne l’avez toujours pas fait:

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

  • Donner 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

Maintenant, vous devriez être capable de ssh EC2 (:

Le fichier de clé ne doit pas être visible publiquement, donc utilisez la permission 400

 chmod 400 keyfile.pem 

Si la commande ci-dessus montre une erreur d’utilisation

 sudo chmod 400 keyfile.pem 

Maintenant, ssh dans la machine ec2, si vous rencontrez toujours le problème, utilisez ec2-user

ssh -i keyfile.pem [email protected]

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

supprimer l’inheritance et toutes les permissions. alors accordez-vous le contrôle total. Après tout, SSL ne vous donnera plus la même erreur.

Ce qui a résolu ce problème pour moi était de déplacer le fichier .pem dans le répertoire apps. Soo dire que fooapp est le nom de mon application. Je l’ai placé directement là-dedans.

Voici les étapes simples pour que l’utilisateur Linux puisse se connecter au serveur à l’aide du fichier .pem:

Etape 1: À l’emplacement du fichier pem et copiez-le dans l’emplacement .ssh de la maison.

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

Step2: Modifier l’autorisation

 chmod 400 ~/.ssh/example.pem 

Etape 3: Exécuter la commande suivante

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

Comme cette commande est trop longue, vous devez 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.

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

Changez simplement la permission de la clé pem à 400 en utilisant la commande ci-dessous.

 chmod 400 pemkeyname.pem 

Si vous n’êtes pas autorisé à modifier l’autorisation d’un fichier, vous pouvez utiliser sudo comme ci-dessous.

 sudo chmod 400 pemkeyname.pem 

J’espère que cela devrait bien fonctionner.

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

1) la clé d’access n’a pas la bonne autorisation. Les clés pem avec une autorisation par défaut ne sont pas autorisées à établir une connexion sécurisée. Il suffit de changer la permission:

chmod 400 xyz.pem

2) Vérifiez également si vous avez ouvert une session avec les identifiants d’utilisateur appropriés. Sinon, utilisez sudo lors de la connexion

sudo ssh -i {fichier de clés} ec2-user @ {adresse ip de l’hôte distant}

Eh bien, en regardant votre description de poste, j’estime que vous avez commis 2 erreurs: –

  1. Définissez les permissions correctes pour la clé privée . La commande ci-dessous devrait vous aider à définir une autorisation 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

Cette erreur est uniquement due à l’autorisation.

Juste donner la permission 600

#chmod 600 pemfilepath