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:
ubuntu
ec2-user
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:
ssh-add ~/.ssh/KEY_PAIR_NAME.pem
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:
Modifier les permissions de la clé
chmod 400 mykey.pem
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
ssh-add xyz.pem
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:
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.
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.
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:
Utilisez-vous le bon fichier .pem de clé privée?
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.)
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:
cp key.pem ~/.ssh/key.pem
chmod 400 ~/.ssh/key.pem
eval `ssh-agent -s` ssh-add
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: –
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
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