219 votes

SSH Permission refusée (publickey)

J'essaie de me connecter à un Linode (sous Ubuntu 12.04 LTS) à partir de ma machine locale (également sous Ubuntu 12.04 LTS).

J'ai créé une clé privée et une clé publique sur ma machine locale et copié ma clé publique dans le fichier authorized_keys de mon Linode. Cependant, chaque fois que j'essaie de me connecter en ssh à mon Linode, j'obtiens le message d'erreur suivant Permission denied (publickey) .

Ce n'est pas un problème avec la façon dont ssh est configuré sur mon Linode parce que je peux y accéder depuis ma machine Windows en utilisant l'authentification par clé.

Dans mon .ssh sur ma machine Ubuntu locale, j'ai mes id_rsa y id_rsa.pub fichiers. Dois-je créer un fichier authorized_keys sur ma machine locale ?

EDIT : Voici ce que j'obtiens lorsque j'exécute ssh -vvv -i id_rsa [youruser]@[yourLinode] :

debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).

138voto

Graeme Hutchison Points 6643

PubKeyAuthentication

Configurez votre client

  1. Générez votre clé.

    ssh-keygen
  2. Configurez ssh pour utiliser la clé.

    vim ~/.ssh/config
  3. Copiez votre clé sur votre serveur.

    ssh-copy-id -i /path/to/key.pub SERVERNAME`

Votre fichier de configuration de étape 2 devrait avoir quelque chose de similaire à ce qui suit :

Host SERVERNAME
Hostname ip-or-domain-of-server
User USERNAME
PubKeyAuthentication yes
IdentityFile ./path/to/key

Vous pouvez ajouter IdentitiesOnly yes pour garantir ssh utilise les IdentityFile et aucun autre fichier clé pendant l'authentification. Configuration de IdentitiesOnly empêche les échecs d'authentification, lorsque ssh qui, sinon, tenterait de se connecter avec des clés multiples. Cette configuration est également considérée comme plus sûre, car vous ne divulguez pas d'informations sur les autres clés que vous avez installées et vous maintenez la séparation de vos clés entre les différents niveaux d'accès.

Dépannage

  1. utiliser l'option "-vvv".
  2. Assurez-vous que le serveur dispose de votre clé publique (.pub).
  3. Assurez-vous que votre IdentiyFile pointe vers votre clé PRIVÉE.
  4. Assurez-vous que votre .ssh a une autorisation de 700 et les fichiers qui s'y trouvent ont une autorisation de 600.
    • ssh-keygen créera des fichiers et des répertoires pour vous avec les permissions appropriées.
  5. tail -f /var/log/auth.log (sur le serveur) et surveiller les erreurs lorsque vous tentez de vous connecter
  6. Si vous avez beaucoup de fichiers clés, essayez IdentitiesOnly yes pour limiter l'authentification à l'utilisation de la clé unique spécifiée.

110voto

Buzut Points 1251

Parfois, le problème vient des autorisations et de la propriété. Par exemple, si vous voulez vous connecter en tant que root, /root , .ssh y authorized_keys doivent appartenir à root. Sinon, sshd ne sera pas en mesure de les lire et ne pourra donc pas savoir si l'utilisateur est autorisé à se connecter.

Dans votre répertoire personnel :

chown -R your_user:your_user .ssh

Quant aux droits, allez-y avec 700 pour .ssh et 600 pour authorized_keys

chmod 700 .ssh
chmod 600 .ssh/authorized_keys

29voto

Marc Points 1

Le problème que j'avais était qu'il utilisait les mauvaises clés sur le client. J'avais renommé id_rsa et id_rsa.pub en quelque chose d'autre. Vous pouvez soit les renommer à leur valeur par défaut, soit utiliser la commande ssh comme suit lors de son lancement

ssh -i ~/.ssh/private_key username@host

19voto

guntbert Points 12407

Vous n'avez pas besoin authorized_keys sur votre client.

Vous devez indiquer au client ssh d'utiliser réellement la clé que vous avez générée. Il existe plusieurs façons de le faire. Pour tester, tapez ssh -vvv -i .ssh/id_rsa [youruser]@[yourLinode] . Vous devrez fournir votre phrase de passe à chaque fois que vous voudrez vous connecter au serveur.

Si cela a fonctionné, vous pouvez ajouter la clé à la section ssh-agent con ssh-add .ssh/id_rsa (vous ne devrez fournir la phrase de passe qu'une seule fois et cela devrait fonctionner tant que vous ne vous déconnectez pas ou ne redémarrez pas).

17voto

skabob11 Points 608

Vérifiez également la valeur de PasswordAuthentication en /etc/ssh/sshd_config et si c'est no le changer en yes . N'oubliez pas de redémarrer le service ssh après cela.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X