sans mot de passe ssh ne fonctionne pas

35

J'ai essayé de configurer un fichier ssh b / w sans mot de passe A à B et B à A également. Génération de la clé publique et privée à l'aide de ssh-keygen -trsa sur les deux machines. Utilisé l'utilitaire ssh-copy-id pour copier les clés publiques de A à B ainsi que B à A .

Le fichier ssh sans mot de passe fonctionne de A à B mais de not de B à A . J'ai vérifié les permissions du dossier ~ / ssh / et semble être normal.

A's .ssh permissions du dossier:

-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 .

B's .ssh permissions du dossier:

-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 .

A est un ubuntu 10.04 (OpenSSH_5.3p1 Debian-3ubuntu4, OpenSSL 0.9.8k 25 mars 2009) B est une machine debian (OpenSSH_5.1p1 Debian-5, OpenSSL 0.9.8g 19 oct. 2007)

De A :

#ssh B

fonctionne bien.

De B :

#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 en utilisant le fichier /root/id_rsa . J'ai également exécuté la commande ssh-add sur les deux machines.

La partie d’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 suis à court d’idées. Toute aide serait appréciée.

    
posée Cuurious 27.07.2011 - 08:28
la source

5 réponses

23

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

Sur la machine A

ouvrez un terminal et entrez les commandes comme suit:

[email protected]:~# id

Juste pour être sûr que nous sommes root.

Si la commande ci-dessus affiche quelque chose comme ci-dessous, nous sommes root else passez à root en utilisant 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 [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|          ooo+==B|
|         . E=.o+B|
|        . . .+.*o|
|       . . .  ...|
|        S        |
|                 |
|                 |
|                 |
|                 |
+-----------------+

Je n'ai utilisé aucune phrase secrète. Si vous en avez besoin, vous pouvez l'utiliser.

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

[email protected]:~# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
[email protected]'s password: 

Maintenant, essayez de vous connecter à la machine avec ssh '[email protected]' et archivez:

~/.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 que vous souhaitez connecter (par exemple, la machine B)

3) Connectez-vous à B sans mot de passe

[email protected]:~# ssh [email protected]
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
[email protected]:~$

Sur la machine B

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

[email protected]:~# 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 [email protected]
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

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

Maintenant, essayez de vous connecter à la machine avec ssh '[email protected]' et archivez:

.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 [email protected]
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é. Maintenant, vous avez deux machines avec une connexion activée par ssh-key (clé publique).

    
réponse donnée aneeshep 27.07.2011 - 12:25
la source
42

Après mon configuration de ssh sans mot de passe, on m'a toujours demandé mon mot de passe utilisateur. En regardant /var/log/auth.log sur la machine distante, vous avez signalé le problème:

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

Alors, assurez-vous d'avoir raison:

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 est plus difficile d'avoir la même exigence pour votre dossier de départ.

Vérifiez é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 , donc cela ne devrait pas poser de problème.

    
réponse donnée Maxime R. 26.12.2011 - 00:16
la source
13

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

Si vous avez toujours des problèmes, lancez le grep suivant sur votre journal:

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

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

Cela devrait vous en dire plus sur votre problème, en supposant que les informations d'authentification sshd sont consignées dans le journal sécurisé, ce qui devrait être par défaut. Si vous voyez des erreurs qui ressemblent à ceci:

  

DATE HOSTNAME sshd [1317]: Authentification refusée: propriété ou modes incorrects pour le 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 d’autres éléments.

En ce qui concerne la raison pour laquelle vous devez restreindre les autorisations d’écriture sur votre répertoire personnel (même si les autorisations sont déjà restreintes sur vos répertoires .ssh et suivants), les autres utilisateurs pourront renommer votre répertoire .ssh et en créer un nouveau. - bien que ce soit inutilisable tel quel (en raison de fausses autorisations), 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 l’accès en écriture pour le groupe et / ou d’autres utilisateurs à votre répertoire personnel ouvrira le compte ssh force.

    
réponse donnée KTBiz 03.02.2012 - 17:37
la source
2

utilisez-vous le compte root sur chaque machine? Habituellement, sur Ubuntu, vous utiliseriez un compte utilisateur et lui donniez les privilèges sudo nécessaires.

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

Autres choses à vérifier:

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

coche le /etc/ssh/sshd_config contient

PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes
    
réponse donnée Smithamax 27.07.2011 - 11:32
la source
-3

dans / etc / ssh / sshd_config sur la cible changer

  

PermitRootLogin non

à

  

PermitRootLogin yes

puis tuez -HUP votre PID sshd:

  

root @ dzone2 # ps -ef | grep ssh       racine 28075 27576 0 17 novembre? 6:11 / usr / lib / ssh / sshd

root 17708 20618   0 10:09:30 pts/37      0:00 grep ssh [email protected] # kill -HUP 28075 [email protected] # ps -ef|grep ssh
root 17861 20618   0 10:09:44 pts/37      0:00 grep ssh
root 17852 27576   0 10:09:42 ?           0:00 /usr/lib/ssh/sshd
    
réponse donnée Duncan 01.06.2012 - 00:13
la source

Lire d'autres questions sur les étiquettes