76 votes

Essayer de faire l'authentification ssh avec des fichiers de clés : le serveur a refusé notre clé

J'essaie de configurer l'authentification ssh avec des fichiers clés à la place du nom d'utilisateur et du mot de passe. Le client est une boîte Windows exécutant PuTTY et le serveur est un serveur Ubuntu 12.04 LTS.

J'ai téléchargé puttygen.exe et lui ai fait générer une paire de clés. Dans /etc/ssh/sshd_config J'ai cette ligne :

AuthorizedKeysFile %h/.ssh/authorized_keys

et sur le fichier de la clé publique de mon client, il est écrit ceci :

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "my@email.address.com"
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAr3Qo6T5XU06ZigGOd3eKvfBhFLhg5kWv8lz6
qJ2G9XCbexlPQGanPhh+vcPkhor6+7OmB+WSdHeNO652kTofnauTKcTCbHjsT7cJ
GNrO8WVURRh4fabknUHPmauerWQZ6TgRPGaz0aucU+2C+DUo2SKVFDir1vb+4u83
AV1pKxs=my@email.address.com
---- END SSH2 PUBLIC KEY ----

J'ai copié la partie de "ssh-rsa AAA" vers "my@email.address.com" et je l'ai mise dans le fichier ~/.ssh/authorized_keys sur mon serveur (dans mon propre dossier personnel). Dans PuTTY, sous Connexion > SSH > Auth, j'ai entré le chemin de la clé privée générée sur mon client et j'ai enregistré les paramètres de la session.

J'ai redémarré le serveur ssh avec

sudo service ssh restart

Maintenant, si je charge le profil dans PuTTY (j'ai vérifié que la clé privée est toujours dans Connexion > SSH > Auth et que le chemin est correct) et que je lance le profil, il dit

Server refused our key

J'ai essayé de mettre la clé publique dans un fichier sous l'onglet répertoire ./ssh/authorized_keys/ mais cela n'a pas aidé alors j'ai utilisé ./ssh/authorized_keys en tant que fichier en y collant la clé. J'ai également essayé de générer une paire de clés privée/publique sur le serveur, en plaçant la clé publique dans le fichier ./ssh/authorized_files et en chargeant le privé dans PuTTY sur mon client. Le redémarrage du serveur n'a pas aidé non plus.

J'ai trouvé que l'erreur peut être résolue en mettant la clé dans un endroit en dehors du dossier personnel de l'utilisateur, mais cela n'est utile que si le dossier personnel est crypté, ce qui n'est pas le cas ici.

J'ai également essayé de générer une clé de 4096 bits, pensant que 1024 était peut-être trop court.

Comment faire pour que cela fonctionne ? Merci !

EDIT:

Ok, /var/log/auth.log a dit :

sshd: Authentication refused: bad ownership or modes for directory /home/vorkbaard/.ssh

Google me dit ~/.ssh/ devrait être de 700 et et ~/.ssh/authorized_keys devrait être de 600, donc j'ai fait ça. Maintenant /var/log/auth.log dit :

sshd: error: key_read: uudecode AAAAB3N [etc etc etc until about 3/4 of my public key]

118voto

Forkbeard Points 2243

Ok, c'est corrigé mais je ne vois pas en quoi c'est différent de ce que j'ai déjà essayé.

Ce que j'ai fait :

  • générer une paire de clés avec puttygen.exe (longueur : 1024 bits)
  • charger la clé privée dans le profil PuTTY
  • entrer la clé publique dans ~/.ssh/authorized_keys en une seule ligne ( ssh-rsa {your_public_key} avec pas plus d'un espace entre ssh-rsa et votre clé)
  • chmod 700 ~/.ssh
  • chmod 600 ~/.ssh/authorized_keys
  • chown $USER:$USER ~/.ssh -R
  • changement /etc/ssh/sshd_config il contient donc AuthorizedKeysFile %h/.ssh/authorized_keys
  • sudo service ssh restart

Pour le dépannage, faites # tail -f /var/log/auth.log .

Merci pour votre aide !

29voto

zer0stimulus Points 3253

Je viens de rencontrer ce problème. Bien que la configuration soit correctement définie, comme cela a déjà été mentionné dans ce fil de discussion (permissions sur authorized_keys, etc.), il s'avère que j'avais la clé publique dans le mauvais format. Elle était sous la forme de :

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "imported-openssh-key"
AAAAB3NzaC1yc2EAAAADAQABAAABAQDUoj0N3vuLpeviGvZTasGQ...
... lPmTrOfVTxI9wjax2JvKcyE0fiNMzXO7qiHJsQM9G9ZB4Lkf71kT
---- END SSH2 PUBLIC KEY ----

Ce qui ne marchait pas. Mais j'ai réussi à le faire fonctionner en l'ayant dans le formulaire :

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDU.....j0N3vuLpeviGvZTasGQa1rcJiPXQMW7v3uurb+n94B9MQaaWR0odsg5DJQL92TNenOda5BO1nd08y6+sdLQmHXExTz6X8FzgoVsAkEl3RscxcxHUksiKA9JfTo38vQvG/bPxIHMCuSumCQVA1laf3rO/uOrkcB7iMWhaoi1/z6AbFtPzeh7xjGfInMWwtBI0CsHSRF73VWIxT26w0P+KjafCjSn/7vDO1bT8QHujSQelU/GqaVEvbbvPl1a7POVjKgHLNekolwRKfNeVEewcnmZaoqfHgOKlPmTrOfVTxI9wjax2JvKcyE0fiNMzXO7qiHJsQM9G9ZB4Lkf71kT UserName@HOSTNAME

13voto

Michal Zmuda Points 299

J'ai dû changer les permissions sur le répertoire personnel

chmod 700 ~

10voto

Mischa Points 261

Le problème est que Windows utilise un autre nouvelle ligne que linux, donc lors de la copie de la clé de Windows à linux, il y a une \n à la fin de la ligne que vous ne pouvez pas voir sous linux dans l'éditeur.

Si vous écoutez le fichier /var/log/auth.log et essayez de vous connecter, l'erreur est la suivante :

sshd : error : key_read : uudecode AAAAB3N[....]== \n

Si vous modifiez votre clé sous Windows de manière à ce qu'elle soit sur une seule ligne sans le signe nouvelle ligne à la fin et copiez-le ensuite sur linux, ça devrait marcher (ça a marché pour moi).

8voto

dopple Points 121

J'ai dû modifier les permissions du répertoire ~/.ssh de 770 à 700 et les permissions du fichier ~/.ssh/authorized_keys de 660 à 600.

Pour une raison quelconque, la suppression des autorisations de groupe a réglé ce problème pour moi.

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

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