38 votes

Ssh-copy-id - permission denied (publickey)

Je veux mettre en place un tunnel ssh vers le serveur mysql qui se trouve dans l'ordinateur possédant une machine virtuelle. De plus, le tunnel doit fonctionner si la machine est redémarrée.

Donc disons A est un ordinateur avec un logiciel linux. B - une machine virtuelle dans l'ordinateur A.

MySQL se trouve dans B.

C - est une machine virtuelle dans l'ordinateur A qui veut se connecter à MySQL dans B.

Maintenant, grâce à cet article : http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/

J'essaie de copier la clé publique sur le serveur distant. Je suppose que je dois la copier sur l'ordinateur A.

ssh-copy-id -i id_rsa.pub.bak [utilisateur]@[IP de A] -p [port de A]
Entrez le mot de passe pour la clé '/home/[utilisateur]/.ssh/id_rsa':
Permission refusée (clé publique).

J'ai essayé d'entrer le mot de passe du fichier id_rsa.pub.bak. Il l'a refusé.

Ensuite, je vois qu'il utilise la clé dans /home/[utilisateur]/.ssh/id_rsa qui est différente de la clé publique que j'essaie de copier, je veux dire bien sûr que la clé privée est différente, mais je veux dire que je copie une clé publique d'une autre clé privée. Donc j'ai essayé en utilisant le mot de passe de celle-ci. Toujours refusé.

Comment pourrais-je déboguer pourquoi le mot de passe est refusé?

Mise à jour

En me basant sur les commentaires, j'ai créé un nouveau fichier public appelé id_rsa.pub où tout est sur une seule ligne maintenant

et j'ai essayé à nouveau et j'obtiens toujours une erreur.

ssh-copy-id -i id_rsa.pub [hôte et port] -vvv
Entrez le mot de passe pour la clé '/home/[utilisateur]/.ssh/id_rsa':
Permission refusée (clé publique).

Mise à jour

J'ai vérifié les autorisations du dossier .ssh et du fichier authorized_keys sur l'ordinateur A - ils sont à 700 et 600 comme le commentaire le dit donc ils sont bons.

Mise à jour

J'ai essayé de paramétrer l'authentification par mot de passe sur l'ordinateur A et de redémarrer le service. Le redémarrage comme indiqué dans la réponse n'a pas fonctionné, cela a écrit sshd non reconnu, donc j'ai redémarré en utilisant:

sudo /etc/init.d/ssh restart

Ensuite j'ai essayé à nouveau sur la machine C de copier vers la machine A.

ssh-copy-id -i id_rsa.pub [utilisateur@hôte] -p [port] -v

et toujours le même résultat:

Entrez le mot de passe pour la clé '/home/[utilisateur]/.ssh/id_rsa':
Permission refusée (clé publique).

Si je vais copier la clé manuellement dans authorized_keys, je vois que la clé publique est déjà existante, la même que celle que je veux copier. J'ai demandé à mon collègue, il a dit qu'il ne l'avait pas copiée. Donc je ne comprends même pas comment elle peut être là.

D'accord, si elle est là ce serait bien, mais en restant là elle ne me permet pas de me connecter en ssh sans entrer de mot de passe. Mais j'ai pu me connecter en entrant le mot de passe. Donc quelque chose ne va clairement pas ici. Et la clé que j'essaie de copier est sans mot de passe. Quand je me suis connecté avec ssh - j'ai entré un mot de passe qui n'était pas vide.

La même clé publique ne peut pas accepter à la fois un mot de passe vide et un mot de passe non vide, ça a du sens. Mais alors pourquoi la clé publique que j'essaie de téléverser est la même que celle dans le fichier authorized_keys si les mots de passe sont différents? Je n'ai pas vérifié chaque caractère, mais il est peu probable que les clés soient si similaires que le début et la fin seraient les mêmes même lorsque les mots de passe sont différents je pense.

36voto

A. Krasnov Points 26

Vous devez en fait vous connecter pour copier votre clé, vous n'avez aucun accès à la machine distante (clé invalide et authentification par mot de passe désactivée) :

Réactivez l'authentification par mot de passe dans /etc/ssh/sshd_config :

PasswordAuthentication yes

Ensuite, redémarrez le service :

service sshd restart

Copiez votre clé publique :

ssh-copy-id -i ~/.ssh/id_rsa.pub USER@HOST -p PORT
[Entrez le mot de passe de l'utilisateur]

Essayez de vous connecter à nouveau, aucun mot de passe ne devrait être requis.

Ensuite, désactivez l'authentification par mot de passe.

15voto

Chealion Points 762

La permission refusée (clé publique) est le serveur SSH distant qui dit "Je n'accepte que les clés publiques comme méthode d'authentification, va-t-en".

C'est votre principal défi : accéder au système distant. Une fois que vous pouvez le faire, vous pouvez télécharger votre clé :

  • En utilisant ssh-copy-id - cela vous permettra de spécifier une clé différente si vous êtes en train de remplacer votre ancienne, par exemple.
  • Modifier le fichier ~/.ssh/authorized_keys de l'utilisateur distant pour ajouter votre clé manuellement.

7voto

Darius.V Points 499

Enfin, j'ai finalement trouvé le problème.

En fait, je n'avais pas besoin de copier la clé publique. La même clé publique est pour les deux clés privées - avec mot de passe et sans mot de passe. Je pensais avoir une clé privée sans mot de passe, mais en réalité ce n'était pas le cas. J'avais seulement le fichier .ppk sans mot de passe. C'était une erreur de communication. Donc un collègue a créé une clé privée sans mot de passe et maintenant je pouvais me connecter en utilisant SSH sans mot de passe. J'ai lu que ne pas avoir de mot de passe est risqué, mais mon collègue dit que ce n'est pas un problème. J'avais besoin de ne pas avoir de mot de passe car je voulais exécuter un script shell au redémarrage - je veux démarrer autossh au redémarrage de l'ordinateur.

Donc la solution cette fois-ci est la suivante - si vous voulez vous connecter sans mot de passe - vérifiez vraiment si votre clé privée est sans mot de passe.

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