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
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
Vous utilisez probablement un mauvais nom d'utilisateur pour vous connecter:
ubuntu
ec2-user
root
ou 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 dans le jeu ... mais cela toujours fonctionne pour moi:
ssh-add ~/.ssh/KEY_PAIR_NAME.pem
ssh user_name@<instance public dns/ip>
par exemple.
ssh [email protected]
espérons que cela aide quelqu'un.
Ok mec, la seule chose qui a fonctionné pour moi a été:
Changer les permissions de la clé
chmod 400 mykey.pem
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]
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 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
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.
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 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
___|\___|___|
Meilleures pratiques pour les clés SSH et les autorisations de fichiers:
clé publique/fichier .pub - 0600 (lecture et écriture uniquement par le propriétaire)
chmod XXXX file/directory
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
Vous devriez maintenant pouvoir utiliser ssh EC2 (:
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.
Connexion alternative à l'aide de PuTTY. C'est bon mais nécessite quelques pas.
J'utilise PuTTY 0.66 sous Windows.
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é.
Il peut y avoir trois raisons derrière cette erreur.
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
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]
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>>
Liste de contrôle:
Utilisez-vous le bon fichier .pem de clé privée?
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.)
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"
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]
Eh bien, en regardant votre description de poste, je pense que vous avez commis 2 erreurs: -
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
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
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
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.
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}
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.
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.