L'ajout de la clé publique à ~/.SSH / authorized keys ne me connecte pas automatiquement

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

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

j'ai suivi les instructions pour changer les permissions:

ci-dessous est le résultat si je fais 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 passphase après le log ci-dessus. Pourquoi il ne me connecte pas sans mot de passe?

365
demandé sur Eric Leschinski 2011-06-16 22:50:49

26 réponses

vous devez vérifier les permissions du fichier authorized_keys et le dossier / dossier parent dans lequel il est situé.

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

pour en savoir plus, lisez , à la page .

vous pouvez également avoir besoin de changer/vérifier les permissions de votre répertoire personnel pour supprimer l'accès en écriture pour le groupe et d'autres.

chmod go-w ~
905
répondu Teddy 2018-03-14 16:43:18

SELinux peut aussi faire en sorte que authorized_keys ne fonctionne pas. Spécialement pour root dans les CentOS 6 et 7. Pas besoin de le désactiver. Une fois que vous avez vérifié que vos permissions sont correctes, vous pouvez corriger cela comme suit:

chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
restorecon -R -v /root/.ssh
130
répondu Cole Stanfield 2015-09-03 19:42:10

réglage ssh authorized_keys semble être simple, mais cache certains pièges, j'essaie de comprendre

-- SERVER --

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

-- CLIENT --

prendre en considération cygwin comme l'émulation linux et installer et exécuter openssh

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

ici en appuyant juste ENTRER vous obtenez défaut 2 fichiers " id_rsa " et " id_rsa.pub " ~/.ssh / mais si vous donnez un nom_for_the_key les fichiers générés sont sauvegardés dans votre pwd

2. placez le your_key.pub à l'ordinateur cible ssh-copy-id user_name@host_name

si vous n'avez pas créé la clé par défaut, c'est la première étape pour vous tromper ... vous devez utiliser

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

3. logging ssh user_name@host_name ne fonctionnera que pour id_rsa par défaut donc voici 2nd trap pour vous devez 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 vous avez donné smth. à entrer phrase de passe: quand vous avez créé des clés (donc c'est normal)

si ssh n'écoute pas le port par défaut 22 doit utiliser ssh -p port_nr

-- SERVER - - - - -

4. modifier /etc/ssh/sshd_config avoir

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

(cas non satisfait)

cela indique à ssh d'accepter authorized_keys et de regarder dans le répertoire de la maison de l'utilisateur pour Sting key_name écrit .ssh/authorized_keys

5 définir les permissions dans la machine cible

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

également désactiver pass auth

passwordAuthentication no

pour fermer la porte de all ssh root/admin/....@votre_domaine les tentatives de

6 s'assurer que la propriété et la propriété collective de tous les répertoires non-root sont appropriées.

chown -R ~ usernamehere
chgrp -R ~/.ssh/ user 

===============================================

7. considérez l'excelent http://www.fail2ban.org

8. extra TUNNEL SSH pour accéder à un MySQL (bind = 127.0.0.1) sever

85
répondu bortunac 2017-05-23 12:26:35

assurez-vous Également que votre répertoire n'est pas accessible en écriture par d'autres

chmod g-w,o-w /home/USERNAME

la Réponse est volée ici

32
répondu Stephan Hoyer 2017-03-20 10:18:17

l'Inscription d'une clé publique .SSH / authorized_keys est nécessaire mais pas suffisant pour que sshd (server) l'accepte. Si votre clé privée est protégée par la phrase de passe, vous devrez donner la phrase de passe à ssh (client) à chaque fois. Ou vous pouvez utiliser ssh-agent, ou un équivalent gnome.

votre trace est compatible avec une clé privée protégée par la phrase de passe. Voir ssh-agent, ou ssh-keygen-p.

7
répondu fche 2011-06-16 19:37:52

attention, SELinux peut aussi déclencher cette erreur, même si toutes les permissions semblent correctes. Le désactiver a fait l'affaire pour moi (insérez les Avertissements habituels sur le fait de le désactiver).

7
répondu Nim 2013-10-18 09:39:49

les désespérés peuvent aussi s'assurer qu'ils n'ont pas de nouvelles lignes supplémentaires dans le fichier authorized_keys en raison de la copie d'id_rsa.texte de pub sorti d'un terminal confus.

7
répondu Alexander Taylor 2014-10-30 03:39:08

l'utilisateur est votre nom d'utilisateur

mkdir -p /home/user/.ssh
ssh-keygen -t rsa
touch /home/user/.ssh/authorized_keys
touch /home/user/.ssh/known_hosts
chown -R user:user /home/user/.ssh
chmod 700 /home/user/.ssh
chmod 600 /home/user/.ssh/id*
chmod 644 /home/user/.ssh/id*.pub
chmod 644 /home/user/.ssh/authorized_keys
chmod 644 /home/user/.ssh/known_hosts
5
répondu wcc526 2015-11-14 11:55:47

la chose qui a fait l'affaire pour moi finalement était de s'assurer que le propriétaire / groupe n'étaient pas root mais utilisateur:

chown -R ~/.ssh/ user
chgrp -R ~/.ssh/ user 
4
répondu Ulrich Behrendt 2014-11-08 09:37:55

Essayer "ssh-add" qui a fonctionné pour moi.

3
répondu h99 2014-03-05 00:42:39

commande d'Écriture:

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

après avoir fait ceci, assurez-vous que votre dir est comme cela:

drwx------ 2 lab lab 4.0K Mar 13 08:33 .
drwx------ 8 lab lab 4.0K Mar 13 08:07 ..
-rw------- 1 lab lab  436 Mar 13 08:33 authorized_keys
-rw------- 1 lab lab 1.7K Mar 13 07:35 id_rsa
-rw-r--r-- 1 lab lab  413 Mar 13 07:35 id_rsa.pub
3
répondu Exsonic 2014-03-13 08:42:19

un autre conseil à retenir. Depuis v7.0 OpenSSH disables DSS / DSA clés ssh par défaut en raison de leur faiblesse héritage. Donc si vous avez OpenSSH v7.0+, Assurez-vous que votre clé n'est pas ssh-dss .

si vous êtes coincé avec les clés DSA, vous pouvez réactiver le support localement en mise à jour de vos fichiers sshd_config et ~/.ssh/config avec des lignes comme: PubkeyAcceptedKeyTypes=+ssh-dss

3
répondu user2683246 2016-04-29 12:04:12

assurez-vous que l'utilisateur cible a un mot de passe défini. Lancez passwd username pour définir un. Ceci était requis pour moi même si le login SSH de mot de passe était désactivé.

2
répondu George 2014-11-15 06:17:55

une Autre question que vous devez prendre soin. Si votre fichier généré n'est pas par défaut id_rsa et id_rsa.pub

vous devez créer .SSH / config fichier et définir manuellement quel fichier id vous allez utiliser avec la connexion.

exemple ici:

host remote_host_name
hostname 172.xx.xx.xx
user my_user
IdentityFile /home/my_user/.ssh/my_user_custom.pub
2
répondu Kunthar 2017-02-02 09:41:59

dans mon cas, je devais mettre mon fichier authorized_keys dans .openssh .

Cet emplacement est spécifié dans /etc/ssh/sshd_config sous l'option AuthorizedKeysFile %h/.ssh/authorized_keys .

2
répondu Sean Bannister 2017-02-22 18:00:53

j'ai émis sudo chmod 700 ~/.ssh et chmod 600 ~/.ssh/authorized_keys et chmod go-w $HOME $HOME/.ssh d'en haut et il a corrigé mon problème sur une boîte CentOS7 que j'avais foiré les permissions sur tout en essayant de faire fonctionner les actions samba. Merci

1
répondu GJSmith3rd 2015-05-01 00:53:12

on dirait un problème de permission. Habituellement, il se produit si l'autorisation d'un fichier/répertoire n'est pas correctement configuré. Dans la plupart des cas, il s'agit de ~/.ssh et ~/.ssh/* . Dans mon cas, ils sont /home/xxx .

vous pouvez changer le niveau de log de sshd en modifiant /etc/ssh/sshd_config (recherche LogLevel , paramétrez-le à DEBUG ), puis vérifiez la sortie dans /var/log/auth.log pour voir ce qui s'est passé exactement.

1
répondu Joey 2015-05-08 01:09:59

cela résout mon problème

ssh-agent bash

ssh-add

1
répondu Julian 2015-06-21 14:57:57

assurez-vous que vous avez copié toute la clé publique de authorized_keys ; le préfixe ssh rsa est nécessaire pour que la clé fonctionne.

1
répondu Willem 2018-02-22 11:36:26

vous devez vérifier les propriétés des fichiers. pour attribuer la propriété:

$ chmod 600 ~/.ssh/sshKey
$ chmod 644 ~/.ssh/sshKey.pub
1
répondu Manna 2018-05-03 23:29:59

sur cette note, assurez-vous que votre configuration sshd a -;

PermitRootLogin without-password

défini comme ci-dessus, puis redémarrez sshd(/etc/init.d / sshd restart)

déconnectez-vous et réessayez!

par défaut je crois, c'est -;

PermitRootLogin no
0
répondu Edd Stance 2015-02-03 09:59:15

dans mon cas, c'est parce que le groupe de l'utilisateur n'est pas défini dans les AllowGroups du fichier de configuration /etc/sshd_config. Après l'avoir ajouté, Tout fonctionne bien.

0
répondu pppk520 2016-01-26 06:39:19

mon problème était un fichier AuthorizedKeysFile modifié, alors que l'automatisation pour alimenter /etc/ssh/authorized_keys n'avait pas encore été exécutée.

$sudo grep AuthorizedKeysFile /etc/ssh/sshd_config
#AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysFile  /etc/ssh/authorized_keys/%u
0
répondu Mark 2016-03-28 19:07:21

j'ai le répertoire de base dans un emplacement non standard et dans sshd les journaux, j'ai cette ligne:

Could not open authorized keys '/data/home/user1/.ssh/authorized_keys': Permission denied

même si toutes les permissions étaient très bien (voir les autres réponses).

j'ai trouvé une solution ici: http://arstechnica.com/civis/viewtopic.php?p=25813191&sid=0876f069ec2aa5fdcd691a2e2e7242c2#p25813191

dans mon cas particulier:

  • a ajouté une nouvelle ligne dans /etc/selinux/targeted/contexts/files/file_contexts.homedirs :

    • c'est la ligne d'origine pour les répertoires:

      /home/[^/]*/\.ssh(/.*)? unconfined_u:object_r:ssh_home_t:s0

    • c'est ma nouvelle ligne:

      /data/home/[^/]*/\.ssh(/.*)? unconfined_u:object_r:ssh_home_t:s0

  • suivi d'un restorecon -r /data/ et un sshd redémarrage

0
répondu alexandrul 2016-11-25 09:00:05

il suffit de regarder sur /var/log/auth.log sur le" serveur . Définir une verbosité supplémentaire avec - vv du côté du client n'aidera pas, car il est peu probable que le serveur offre trop d'informations à un attaquant éventuel.

0
répondu Edward van Kuik 2018-01-19 16:19:33

j'ai eu ce problème et aucune des autres réponses ne l'a résolu, bien que, bien sûr, les autres réponses sont correct.

dans mon cas, s'est avéré que le répertoire /root lui-même (pas par exemple /root/.ssh ) avait les mauvaises permissions. I neededed:

chown root.root /root
chmod 700 /root

bien sûr, ces permissions devraient être quelque chose comme cela (peut-être chmod 770 ) indépendamment. Toutefois, elle a spécifiquement empêché sshd de travail, même si /root/.ssh et /root/.ssh/authorized_keys avaient tous les deux des permissions et des propriétaires corrects.

0
répondu Jason Cohen 2018-09-02 15:24:11