ssh-copy-id ne fonctionne pas

19

J'essaie de configurer une connexion SSH sans mot de passe sur CentOS 5.4:

  1. J'ai généré la clé publique RSA sur le client.
  2. ssh-copy-id du client au serveur.
  3. ~ / .Ssh / authorized_keys vérifié contient la clé client.

Le client a toujours demandé un mot de passe. Qu'est-ce que j'ai raté?

Merci.

EDIT: vérifié ssh_config et les autorisations comme conseillé. Voici les informations de débogage du client:

debug2: key: /home/saguna/.ssh/identity ((nil))
debug2: key: /home/saguna/.ssh/id_rsa (0x2b31921be9a0)
debug2: key: /home/saguna/.ssh/id_dsa ((nil))
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
debug3: Trying to reverse map address 192.168.1.75.
debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug2: we did not send a packet, disable method
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/saguna/.ssh/identity
debug3: no such identity: /home/saguna/.ssh/identity
debug1: Offering public key: /home/saguna/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Trying private key: /home/saguna/.ssh/id_dsa
debug3: no such identity: /home/saguna/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
[email protected]'s password: 
jackhab
la source
Je comprends aussi :(
Matt Joiner

Réponses:

19

9/10 fois c'est parce que ~ / .ssh / authorized_keys n'est pas au bon mode.

chmod 600 ~/.ssh/authorized_keys
JustinShoffstall
la source
2
Pour info, j'ai créé un petit script sur github.com/centic9/generate-and-send-ssh-key qui exécute les étapes nécessaires en une seule fois et assure en outre toutes les autorisations de fichier / répertoire qui m'ont toujours causé des maux de tête ...
centic
5
Si cela ne fonctionne pas pour quelqu'un, vous devriez également regarder la réponse de @ Gilles. En particulier, la maison et les~/.ssh répertoires ne peuvent pas être inscriptibles par une personne autre que l'utilisateur.
ostrokach
Je sais que c'est vieux, mais merci mille fois à @centic. J'étais sûr que mes autorisations étaient correctes mais je n'ai jamais pris la peine de vérifier les répertoires $ HOME et .ssh /.
jdferreira
A travaillé pour moi. Merci!
Ivan Kovtun
12

Archivez / etc / ssh / sshd_config pour permettre l'authentification avec une clé. Vous devriez avoir quelque chose comme ça, et assurez-vous que les lignes ne sont pas commentées:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys

PS: n'oubliez pas de redémarrer sshd après avoir modifié le fichier (/etc/init.d/sshd restart)

Patkos Csaba
la source
En plus de la réponse de Patkos Csaba, vérifiez les autorisations de votre dossier ~ / .ssh local et distant.
Dans mon cas, a AuthorizedKeysFileété commenté et j'ai également dû utiliser un chemin absolu vers authorized_keys.
Andrew
J'obtiens «Impossible d'ouvrir une connexion avec votre agent d'authentification». lors de l'essai de ssh-add
Manticore
ce devrait être la réponse choisie
Francisco Tapia
Peut-être que vous ne comprenez pas les commentaires. Les lignes commentées vous montrent les valeurs par défaut. Vous n'avez pas besoin de les décommenter si vous voulez la valeur par défaut. Vous ne devez supprimer la mise en commentaire de la propriété que si vous souhaitez remplacer la valeur par défaut.
clearlight
5

J'ai constaté qu'avec mon système, le problème était que le répertoire utilisateur (/ home / nom d'utilisateur) était équipé du mauvais ensemble d'autorisations. C'était drwxr-x-w-et cela devait être drwxr-xr-x(avec une autorisation d'écriture uniquement pour le propriétaire). La solution était d'utiliser chmod:

sudo chmod 0755 /home/username
Charlie
la source
1
Yah! A travaillé pour moi. ssh me donnait un mot de passe parce que j'avais bâclé les persmissions.
clearlight
4

Je ne suis pas un expert ici mais j'ai rencontré un tel problème aussi, voici mes deux cents en plus de toutes les autres suggestions.

Copie parfois ssh-copy-idla mauvaise clé sur le serveur distant (peut se produire si vous avez plusieurs clés et / ou utilisez des noms non par défaut pour les fichiers de clés) ou votre agent d'authentification est mal configuré.

Voici une citation tirée des pages de manuel :

Si l'option -i est donnée, le fichier d'identité (par défaut ~ / .ssh / id_rsa.pub) est utilisé, qu'il y ait ou non des clés dans votre agent ssh. Sinon, si ceci: ssh-add -L fournit une sortie, il l'utilise de préférence au fichier d'identité.

Donc, fondamentalement, vous voulez vérifier que:

  • Votre agent d'authentification système (généralement ssh-agent) voit les clés que vous avez l'intention d'utiliser (vérifier la ssh-add -Lsortie)
    • Si vous ne voyez pas la clé souhaitée, ajoutez-la à l'aide de ssh-add
  • Ils ont ssh-copy-idcopié la même clé sur la machine distante (connectez-vous simplement au serveur distant en utilisant un mot de passe et vérifiez le contenu de ~/.ssh/authorized_keys)
    • Si vous ne voyez pas la clé souhaitée sur le serveur distant, vous pouvez implicitement dire ssh-copy-idquelle clé copier:ssh-copy-id -i ~/.ssh/some_public_key

J'espère que cela pourra aider.

Dmitry Pashkevich
la source
1
Vous avez réussi! En fouillant mon ssh-copy-id problème, c'est :, DEFAULT_PUB_ID_FILE=$(ls -t ${HOME}/.ssh/id*.pub 2>/dev/null | grep -v -- '-cert.pub$' | head -n 1)qui sera par défaut la première clé alphabétique - dans mon cas, j'avais un id_boot2docker.pub(qui est apparemment le nom par défaut pour les trucs boot2docker ssh). Il semble qu'il y ait un tas de différentes implémentations ssh-copy-id; le mien est venu brew install ssh-copy-id, qui à son tour est pris à partir de openssh-portable. Ma page de manuel mentionne explicitement ce comportement ...
Christian Ulbrich
3

Le problème le plus courant est les autorisations non valides côté serveur. Vérifiez qu'aucun de votre répertoire personnel, ~/.sshet ~/.ssh/authorized_keyssont modifiables par tout le monde , mais vous (en particulier ils ne doivent pas être un groupe inscriptible).

Si ce n'est pas le problème, exécutez ssh -vvv serveret regardez la vue du client sur la conversation. Vérifiez notamment que le client essaie la clé avec le serveur.

Gilles 'SO- arrête d'être méchant'
la source
Je vous remercie!!! Je ne comprends pas pourquoi, mais votre répertoire personnel , ~/.sshet ~/.ssh/authorized_keysne peut être accessible en écriture par personne , mais vous.
ostrokach du
2

En plus de tout ce qui précède, on peut toujours vérifier le fichier journal sshd:

/var/log/auth.log
Omer Dagan
la source
1

J'ai essayé les autres correctifs mais j'ai constaté que je devais changer le répertoire personnel pour qu'il ne soit pas accessible en écriture pour les autres. Le répertoire personnel était 777. Je l'ai changé en 755 et cela a fonctionné.

dulcana
la source
1
bienvenue à @dulcana, il essaie de définir une connexion ssh sans mot de passe, comment la modification des autorisations à 755 pourrait aider à résoudre le problème?
Francisco Tapia du
@FranciscoTapia parce que sshd garantit que les autres utilisateurs n'ont pas pu créer de manière malveillante le fichier authorized_keys, refusant la connexion par clé ssh où un groupe ou un autre peut écrire le fichier ou n'importe lequel de leurs parents. D'autres réponses l'ont également mentionné.
Ángel
0

dans mon cas / etc / ssh / sshd_config contenait le paramètre suivant:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys2

Mais ssh-copy-id a créé un fichier avec le nom authorized_keys, j'ai donc dû modifier l'entrée au nouveau nom. plus d'informations sur deprecated authorized_keys2

laplasz
la source
0

En complément de la réponse d'Omer Dagan pour le nouveau CentOS 7, utilisez:

journalctl -f -u sshd

pour regarder les journaux sshd sur le serveur.

david.perez
la source
-1

Le problème était que j'avais RSAAuthentication désactivé dans / etc / ssh / ssh_config

jackhab
la source