J'ai essayé de configurer un ssh sans mot de passe b/w A
à B
et 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 A
vers B
ainsi que B
vers A
name__.
Ssh sans mot de passe fonctionne de A
à B
mais not
de B
à A
name__. 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 .
A
est une 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
name__:
#ssh B
fonctionne bien.
De B
name__:
#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.
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).
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.
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.
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