web-dev-qa-db-fra.com

ssh sans mot de passe ne fonctionne pas

J'ai essayé de configurer un ssh sans mot de passe b/w Aà Bet Bà Aégalement. Généré les clés publique et privée à l'aide de ssh-keygen -trsa sur les deux machines. Utilisez l'utilitaire ssh-copy-id pour copier les clés publiques de Avers Bainsi que Bvers Aname__.

Ssh sans mot de passe fonctionne de Aà Bmais notde Bà Aname__. J'ai vérifié les autorisations du dossier ~/ssh/et semble être normal.

Autorisations de dossier A's .ssh:

-rw-------  1 root root 13530 2011-07-26 23:00 known_hosts
-rw-------  1 root root   403 2011-07-27 00:35 id_rsa.pub
-rw-------  1 root root  1675 2011-07-27 00:35 id_rsa
-rw-------  1 root root   799 2011-07-27 00:37 authorized_keys
drwxrwx--- 70 root root  4096 2011-07-27 00:37 ..
drwx------  2 root root  4096 2011-07-27 00:38 .

Autorisations de dossier B's .ssh:

-rw------- 1 root root  884 2011-07-07 13:15 known_hosts
-rw-r--r-- 1 root root  396 2011-07-27 00:15 id_rsa.pub
-rw------- 1 root root 1675 2011-07-27 00:15 id_rsa
-rw------- 1 root root 2545 2011-07-27 00:36 authorized_keys
drwxr-xr-x 8 root root 4096 2011-07-06 19:44 ..
drwx------ 2 root root 4096 2011-07-27 00:15 .

Aest une ubuntu 10.04 (OpenSSH_5.3p1 Debian-3ubuntu4, OpenSSL 0.9.8k 25 mars 2009) Best une machine Debian (OpenSSH_5.1p1 Debian-5, OpenSSL 0.9.8g 19 oct 2007)

De Aname__:

#ssh B

fonctionne bien.

De Bname__:

#ssh -vvv A 
...
...
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /root/.ssh/identity ((nil))
debug2: key: /root/.ssh/id_rsa (0x7f1581f23a50)
debug2: key: /root/.ssh/id_dsa ((nil))
debug3: Wrote 64 bytes for a total of 1127
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,gssapi,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug3: no such identity: /root/.ssh/identity
debug1: Offering public key: /root/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug3: Wrote 368 bytes for a total of 1495
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.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: 

Ce qui signifie essentiellement qu’il ne s’authentifie pas à l’aide du fichier /root/id_rsa. J'ai aussi exécuté la commande ssh-add dans les deux machines.

La partie authentification du fichier /etc/ssh/sshd_config est

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

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

# Don't read the user's ~/.rhosts and ~/.shosts files

Je manque d'idées. Toute aide serait appréciée.

36
Cuurious

Assurez-vous simplement que vous avez suivi la procédure suivante:

sur la machine A

ouvrez un terminal et entrez les commandes comme suit:

root@aneesh-pc:~# id

Juste pour nous assurer que nous sommes root.

Si la commande ci-dessus produit quelque chose comme ci-dessous, nous sommes la racine root, passez à root à l'aide de la commande su

uid=0(root) gid=0(root) groups=0(root)

1) Créez les clés.

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
49:7d:30:7d:67:db:58:51:42:75:78:9c:06:e1:0c:8d root@aneesh-pc
The key's randomart image is:
+--[ RSA 2048]----+
|          ooo+==B|
|         . E=.o+B|
|        . . .+.*o|
|       . . .  ...|
|        S        |
|                 |
|                 |
|                 |
|                 |
+-----------------+

Je n'ai utilisé aucun mot de passe. Si vous en avez besoin, vous pouvez l'utiliser.

2) Copiez la clé publique dans le fichier .ssh/authorized_keys de la machine B

root@aneesh-pc:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@mylap
root@mylap's password: 

Maintenant, essayez de vous connecter à la machine, avec ssh 'root@mylap', et vérifiez:

~/.ssh/authorized_keys

pour vous assurer que nous n'avons pas ajouté de clés supplémentaires auxquelles vous ne vous attendiez pas.

Remplacez mylap par le nom d'hôte ou l'adresse IP de la machine à laquelle vous souhaitez vous connecter (c'est-à-dire la machine B)

3) Connectez-vous à B sans mot de passe

root@aneesh-pc:~# ssh root@mylap
Warning: Permanently added 'mylap,192.168.1.200' (RSA) to the list of known hosts.
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

Last login: Wed Jul 27 15:23:58 2011 from streaming-desktop.local
aneesh@mylap:~$

sur la machine B

4) Créez les clés pour vous reconnecter à la machine A

root@mylap:~# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
35:9f:e7:81:ed:02:f9:fd:ad:ef:08:c6:4e:19:76:b1 root@streaming-desktop
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|          o   .  |
|         . + + o |
|        S o * E  |
|           = O . |
|            O +  |
|           + o o.|
|            . o+=|
+-----------------+

5) Copiez la clé publique dans le fichier .ssh/authorized_keys de la machine A

root@mylap:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@aneesh-pc
Warning: Permanently added 'aneesh-pc,192.168.1.20' (RSA) to the list of known hosts.
root@aneesh-pc's password: 

Maintenant, essayez de vous connecter à la machine, avec ssh 'root@aneesh-pc', et vérifiez:

.ssh/authorized_keys

pour vous assurer que nous n'avons pas ajouté de clés supplémentaires auxquelles vous ne vous attendiez pas.

6) Connectez-vous à A sans mot de passe

ssh root@aneesh-pc
Warning: Permanently added 'aneesh-pc,192.168.1.20' (RSA) to the list of known hosts.
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-generic x86_64)

 * Documentation:  https://help.ubuntu.com/


Last login: Tue Jul 26 18:52:55 2011 from 192.168.1.116

Si vous pouvez suivre ces étapes, vous avez terminé. Vous avez maintenant deux machines avec la connexion activée par ssh-key (clé publique).

24
aneeshep

Après configuration de ssh sans mot de passe , on m'a toujours demandé mon mot de passe utilisateur. L'examen de /var/log/auth.log sur la machine distante a mis en évidence le problème:

sshd[4215]: Authentication refused: bad ownership or modes for directory /home/<user>

Alors, assurez-vous de bien le faire:

chmod o-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Bien qu'il soit évident d'interdire aux autres utilisateurs d'écrire sur votre dossier .ssh, il était plus difficile de respecter les mêmes exigences pour votre dossier personnel.

Cochez également /etc/ssh/ssd_config pour vous assurer que les options RSAAuthentication et PubkeyAuthentication ne sont pas désactivées. La valeur par défaut est yes. Cela ne devrait donc pas poser de problème.

44
Maxime R.

Probablement juste un problème d'autorisations de niveau supérieur. Vous devez supprimer les autorisations en écriture du groupe et des autres dans votre répertoire personnel et votre répertoire .ssh. Pour résoudre ces autorisations, exécutez chmod 755 ~ ~/.ssh ou chmod go-w ~ ~/.ssh.

Si vous rencontrez toujours des problèmes, indiquez le grep suivant dans votre journal:

Sudo egrep -i 'ssh.*LOCAL_USER_NAME' /var/log/secure

(remplacez LOCAL_USER_NAME par votre nom d'utilisateur local ...)

J'espère que cela vous en dira plus sur votre problème, en supposant que les informations d'authentification sshd soient consignées dans le journal sécurisé, qui devrait l'être par défaut. Si vous voyez des erreurs qui ressemblent à ceci:

DATE HOSTNAME sshd [1317]: Authentification refusée: mauvaise propriété ou modes pour répertoire/chemin/vers/un/répertoire

C'est le problème décrit ci-dessus et vous devez trouver le répertoire en question et supprimer les autorisations d'écriture du groupe et autre.

En ce qui concerne la raison pour laquelle vous auriez besoin de restreindre les autorisations en écriture sur votre répertoire de base (même si les autorisations sont déjà limitées sur votre .ssh et les répertoires suivants), cela permettra à d’autres utilisateurs de renommer votre répertoire .ssh et d’en créer un nouveau. serait inutilisable tel quel (en raison d'autorisations incorrectes), le correctif pour la plupart des utilisateurs serait probablement de modifier les autorisations plutôt que de vérifier le contenu du répertoire ...

TLDNR: Autoriser un accès en écriture pour le groupe et/ou d'autres personnes dans votre répertoire de base fera que ssh force la connexion par mot de passe.

14
KTBiz

utilisez-vous le compte root sur chaque machine? Généralement, sur Ubuntu, vous utiliserez un compte utilisateur et lui accorderez les privilèges Sudo requis.

Si vous utilisez un utilisateur non root Sudo chown $USER -R ~/.ssh pourrait résoudre votre problème

Autres choses à vérifier:

revérifiez que le id_rsa.pub de B est dans le authorized_keys de A.

vérifie que le /etc/ssh/sshd_config contient

PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes
2
Smithamax