Dun jour à lautre, notre serveur dentreprise a commencé à me demander mon mot de passe SSH.
La première chose que jai vérifiée était de voir si ma clé était à lintérieur de .ssh/authorized_keys
sur le serveur. Ma clé était à lintérieur, rien na changé. Aussi dans /etc/ssh/sshd_config
rien na changé.
Ensuite, jai essayé de faire cette procédure fraîchement installé le serveur Ubuntu16. Après avoir terminé ces 5 étapes, le nouveau serveur ma demandé à nouveau le mot de passe SSH.
La commande ssh-copy-id
a finalement effectué la connexion SSH sans clé, mais jai remarqué que .ssh/authorized_keys
comporte trois lignes: une commençant par ssh-dss
et 2x commençant par ssh-rsa
Maintenant, je me souviens que la procédure en 5 étapes à partir du lien ci-dessus a fonctionné dans le passé avec une seule clé.
Quelque chose a-t-il changé récemment? Pourquoi la procédure ci-dessus ne fonctionne plus?
Edit: Puisque ssh-copy-id
copie au total 3 clés dans .ssh/authorized_keys
ces clés se trouvent dans les fichiers suivants:
~/.ssh/id_dsa
~/.ssh/sshkey.pub
~/.ssh/id_rsa.pub
donc jai supprimé ligne par ligne du fichier .ssh/authorized_keys
de la télécommande
ligne ~/.ssh/id_dsa
supprimée – connexion automatique réussie
ligne ~/.ssh/id_rsa.pub
supprimée – connexion automatique réussie
ligne ~/.ssh/sshkey.pub
supprimée – connexion automatique not réussie – mot de passe demandé
Seul le contenu de ~/.ssh/sshkey.pub
est nécessaire. Pourquoi SSH compare sshkey.pub
et non id_rsa.pub
comme dans lexemple du didacticiel en ligne?
Commentaires
Réponse
Il semble que ssh-copy-id
est simplement une fonction pratique. Il vérifie si les clés ont déjà été exportées vers la machine, il crée le répertoire .ssh
si nécessaire, mais en gros, il ajoute simplement des clés publiques à .ssh/authorized_keys
. ssh-copy-id
est un script shell (en openssh), vous pouvez donc lire son code (vi `which ssh-copy-id`
) à la fin:
[ "$DRY_RUN" ] || printf "%s\n" "$NEW_IDS" | \ ssh "$@" "exec sh -c "cd ; umask 077 ; mkdir -p .ssh && { [ -z ""`tail -1c .ssh/authorized_keys 2>/dev/null`"" ] || echo >> .ssh/authorized_keys ; } && cat >> .ssh/authorized_keys || exit 1 ; if type restorecon >/dev/null 2>&1 ; then restorecon -F .ssh .ssh/authorized_keys ; fi"" \ || exit 1
Lors de lauthentification, seuls authorized_keys
sont vérifiés. De la documentation de openssh:
Le fichier ~ / .ssh / allowed_keys répertorie le public clés autorisées pour la connexion. Lorsque lutilisateur se connecte, le programme ssh indique au serveur la paire de clés quil souhaite utiliser pour lauthentification. Le client prouve quil a accès à la clé privée et le serveur vérifie que la clé publique correspondante est autorisée à accepter le compte.
Jespère que cela répond le titre de votre question « ssh-copy-id contre copie manuelle id_rsa.pub ». Ce fichier ~/.ssh/sshkey.pub
Je ne lai pas, donc jespère que vous avez résolu vous-même les problèmes de votre configuration. Quoi quil en soit, oui, vous pouvez simplement copier manuellement la clé publique dans authorized_keys
nutilisant pas ssh-copy-id
.
ssh -v your-remote-server
à votre question.