ssh-copy-id - autorisation refusée (publickey) [fermé]

30

Je veux configurer le tunnel ssh sur le serveur mysql qui est dans un ordinateur qui a une machine virtuelle. Le tunnel doit également fonctionner si la machine est redémarrée.

Disons donc que A est un ordinateur avec un logiciel Linux. B - machine virtuelle dans l'ordinateur A.

MySQL est en B.

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

Maintenant par 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 le copier sur l'ordinateur A.

ssh-copy-id -i id_rsa.pub.bak [user]@[IP of A] -p [port of A]
Enter passphrase for key '/home/[user]/.ssh/id_rsa':
Permission denied (publickey).

Maintenant, j'ai essayé de saisir la phrase secrète du fichier id_rsa.pub.bak. Il a nié.

Ensuite, je vois qu'il utilise la clé dans /home/}user Clé privée. J'ai donc essayé d'en utiliser la phrase secrète. Également nié.

Comment pourrais-je déboguer pourquoi la phrase secrète est refusée?

Mise à jour

Sur la base des commentaires, j'ai créé un nouveau fichier public appelé id_rsa.pub où tout est maintenant sur une seule ligne

et exécutez et obtenez toujours une erreur.

ssh-copy-id -i id_rsa.pub [host and port] -vvv
Enter passphrase for key '/home/[user]/.ssh/id_rsa':
Permission denied (publickey).

Mise à jour

Vérifié les autorisations sur le dossier .ssh et le fichier authorized_keys sur l'ordinateur A - ils sont 700 et 600, alors le commentaire dit qu'ils sont bons.

Mise à jour

J'ai essayé de définir l'authentification par mot de passe oui sur un ordinateur et de redémarrer le service. Le redémarrage comme par la réponse n'a pas fonctionné, il a écrit sshd non reconnu, j'ai donc redémarré en utilisant:

sudo /etc/init.d/ssh restart

Puis réessayé sur la machine C pour copier sur une machine A.

ssh-copy-id -i id_rsa.pub [user@host] -p [port] -v

et toujours pareil:

Enter passphrase for key '/home/[user]/.ssh/id_rsa':
Permission denied (publickey).

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

Ok, si c'est là ce serait bien, mais en restant là ça ne me permet pas de me connecter avec ssh sans saisir de mot de passe. Mais j'ai pu me connecter en saisissant la phrase secrète. Il y a donc clairement quelque chose qui ne va pas ici. Et la clé que j'essaie de copier est avec une phrase de passe vide. Lorsque je me suis connecté avec ssh - j'ai saisi une phrase secrète qui n'était pas vide.

La même clé publique ne peut pas accepter une phrase de passe vide et une phrase de passe non vide, ce qui est logique. Mais alors pourquoi la clé publique que j'essaie de télécharger est la même que celle du fichier authorized_keys si les phrases secrètes sont différentes? Je n'ai pas vérifié chaque caractère, mais il est peu probable que les touches soient si similaires que le début et la fin soient les mêmes, même si la phrase secrète est différente, je pense.

Darius.V
la source
Quels fichiers commençant par id_rsaavez-vous? Je m'attendrais ssh-copy-idà échouer avec un message d'erreur comme vous l'appelez, car il attend un fichier se terminant par .pub. Comme le vôtre se termine, .bakil serait probablement utile id_rsa.pub.bak.pub.
nlu
@nlu - J'ai id_rsa que j'ai copié en faisant glisser et en déposant le fichier à l'aide du bloc-notes ftp explorer. J'ai également id_rsa.bak que j'ai créé avec nano et collé le contenu avec la souris de notepad ++ mais il semblait qu'il faisait le même texte mais en quelque sorte 2 colonnes. Et j'ai aussi id_rsa.pub.bak qui a également fait avec nano. En fait, il a 3 lignes, mais l'original a tout en une seule ligne. Je ne sais pas si c'est important. Mais comme nous le voyons, je n'ai pas reçu de message d'erreur sur les noms de fichiers.
Darius.V
1
Cela fait. Voir ici par exemple: snailbook.com/faq/publickey-userauth.auto.html ("Si vous utilisez un éditeur de texte, veillez à ce qu'il ne casse pas les lignes de ce fichier.").
nlu
La question est fermée car ils pensent que ce n'est pas un système dans un environnement commercial, mais je résolvais un problème d'environnement commercial.
Darius.V

Réponses:

25

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

Réactivez l'authentification passwd dans / etc / ssh / sshd_config:

PasswordAuthentication yes

Redémarrez ensuite le service:

service sshd restart

Copiez votre clé publique:

ssh-copy-id -i ~/.ssh/id_rsa.pub USER@HOST -p PORT
[Enter user password]

Essayez de vous reconnecter, aucun mot de passe ne devrait être requis.

Désactivez ensuite l'authentification par mot de passe.

Nabil Bourenane
la source
Que faire si j'ai défini PasswordAuth sur oui dans le serveur auquel je veux me connecter et que je peux me connecter avec putty en utilisant un mot de passe, mais ssh-copy-id ne demande toujours pas de mot de passe et écrit simplement l'autorisation refusée (publickey). ?
Darius.V
hé je veux dire merci !!! tu m'as sauvé la journée !!! Merci beaucoup!!!
尤川豪
Grâce à @Nabil, cela fonctionne également à partir d'Ubuntu 18.04. Juste une mise en garde pour les futurs lecteurs: éditez / etc / ssh / sshd_config selon les instructions et NON ssh_config, par oubli (comme je l'ai fait!). De plus, ssh-copy-id USER @ HOST est évidemment suffisant.
Snidhi Sofpro
12

Permission denied (publickey) est le serveur SSH distant disant "J'accepte uniquement les clés publiques comme méthode d'authentification, partez".

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.
  • Modifiez l'utilisateur distant ~/.ssh/authorized_keyspour ajouter votre clé manuellement.
Oli
la source
5

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 phrase de passe et sans phrase de passe. Je pensais avoir une clé privée sans mot de passe, mais en fait je ne l'ai pas fait. Je n'avais que .ppk sans phrase secrète. Ce fut miss communication. Donc, mon collègue a créé une clé privée sans phrase de passe et maintenant je pouvais me connecter en utilisant ssh sans phrase de passe. J'ai lu qu'avoir sans mot de passe est mauvais, mais un collègue dit que ça va. J'avais besoin sans mot de passe car j'ai besoin d'exécuter le script shell au redémarrage - je veux démarrer l'autossh au redémarrage de l'ordinateur.

Cette sorte de solution est cette fois-ci - si vous voulez vous connecter sans mot de passe - vérifiez si votre clé privée est vraiment sans phrase de passe.

Darius.V
la source