528 votes

L'ajout de la clé publique à ~ / .ssh / authorized_keys ne me connecte pas automatiquement

J'ai ajouté la clé ssh publique pour le fichier authorized_keys. ssh localhost devrait me connecter sans demander le mot de passe.

Je l'ai fait et essayé de taper ssh localhost, mais encore, elle me demande de taper le mot de passe. Est-il un autre paramètre que j'ai à faire pour le faire fonctionner?

J'ai suivi l'instruction de modification des autorisations:

Ci-dessous est le résultat si je n' ssh -v localhost

debug1: Reading configuration data /home/john/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to localhost [127.0.0.1] port 22.
debug1: Connection established.
debug1: identity file /home/john/.ssh/identity type 1
debug1: identity file /home/john/.ssh/id_rsa type -1
debug1: identity file /home/john/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.7p1 Debian-8ubuntu3
debug1: match: OpenSSH_4.7p1 Debian-8ubuntu3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'localhost' is known and matches the RSA host key.
debug1: Found key in /home/john/.ssh/known_hosts:12
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: /home/john/.ssh/identity
debug1: Server accepts key: pkalg ssh-rsa blen 149
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>

Puis il demande pour passphase après le journal ci-dessus. Pourquoi n'est-il pas la journalisation de moi sans un mot de passe?

1271voto

Teddy Points 6068

Vous devez vérifier les autorisations du fichier authorized_keys et des dossiers / dossiers parents dans lesquels il se trouve.

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

Pour plus d'informations, voir http://www.openssh.org/faq.html#3.14

Vous devrez peut-être également modifier / vérifier les autorisations de votre répertoire personnel pour supprimer l'accès en écriture des autres utilisateurs.

 chmod go-wrx ~
 

170voto

Cole Stanfield Points 443

SELinux peut également causer authorized_keys ne pas à travailler. Surtout pour racine dans CentOS 6. Pas besoin de le désactiver si. Une fois que vous avez vérifié vos autorisations sont correctes, vous pouvez corriger ce type alors :

123voto

adrian Points 339

configuration ssh authorized_keys semblent être simple mais cache certains pièges, j'essaie de comprendre

-- SERVER --

dans /etc/ssh/sshd_config ensemble passwordAuthentication yes laisser temporaire du serveur d'accepter l'authentification par mot de passe

CLIENT -- --

1. générer des clés privées et publiques (côté client) # ssh-keygen

ici, il suffit d'appuyer sur ENTRÉE, vous obtenez par DÉFAUT 2 fichiers "id_rsa" et "id_rsa.pub" dans ~/.ssh/ mais si vous donnez un name_for_the_key les fichiers générés sont enregistrés dans votre pwd

2. placez le your_key.pub pour machine cible ssh-copy-id user_name@host_name

si vous n'avez pas créer de clé par défaut c'est la première étape pour aller de mal ... vous devez utiliser

ssh-copy-id -i path/to/key_name.pub user_name@host_name

3. la journalisation ssh user_name@host_name fonctionnera uniquement pour défaut id_rsa voici donc la 2ème piège pour vous avez besoin d' ssh -i path/to/key_name user@host

(utiliser ssh -v ... option pour voir ce qui se passe)

Si le serveur demande toujours le mot de passe alors soit vous avez donner qch. pour Entrer mot de passe: lors de la création de clés ( c'est donc normal) ou

-- SERVER -----

4. modifier /etc/ssh/sshd_config pour avoir

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  %h/.ssh/authorized_keys

(uncoment cas)

Cela dit ssh à accepter authorized_keys et de regarder dans le répertoire principal de l'utilisateur pour .ssh/key_name

5 (seulement 4) définir des autorisations dans la machine cible

chmod 755 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Également désactiver passe auth

passwordAuthentication no

pour fermer la porte à tous les ssh root/admin/....@your_domain les tentatives de

41voto

Stephan Hoyer Points 861

Aussi n’oubliez pas que votre répertoire de base n’est pas accessible en écriture par d’autres

Réponse est volé ici

8voto

fche Points 933

Inscription d’une clé publique dans .ssh/authorized_keys est nécessaire mais non suffisante pour sshd (serveur) de l’accepter. Si votre clé privée est protégée par mot de passe, vous devrez donner à ssh (client) le mot de passe chaque fois. Ou vous pouvez utiliser ssh-agent, ou un équivalent de gnome.

Votre mise à jour serait trace est compatible avec une clé privée protégée par mot de passe. Voir ssh-agent, ou ssh-keygen - p.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X