71 votes

Comment se connecter à localhost sans mot de passe ?

EDIT : Mettre exactement ce qui a été fait

J'ai besoin de SSH localhost sans mot de passe, la façon habituelle de le faire (avec des clés publiques) ne fonctionne pas.

user@PC:~$ rm -rf .ssh/*
user@PC:~$ ssh-keygen -t rsa > /dev/null 
Enter file in which to save the key (/home/user/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
user@PC:~$ ls .ssh/
id_rsa  id_rsa.pub
user@PC:~$ ssh-copy-id -i localhost 
The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is f7:87:b5:4e:31:a1:72:11:8e:5f:d2:61:bd:b3:40:1a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
user@localhost's password: 
Now try logging into the machine, with "ssh 'localhost'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

user@PC:~$ ssh-agent $SHELL
user@PC:~$ ssh-add -L
The agent has no identities.
user@PC:~$ ssh-add 
Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)
user@PC:~$ ssh-add -L
ssh-rsa ...MY KEY HERE

user@PC:~$ ssh-copy-id -i localhost 
user@localhost's password: 
Now try logging into the machine, with "ssh 'localhost'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

user@PC:~$ ssh localhost echo 'testing'
user@localhost's password: 

user@PC:~$ 

Donc, comme vous pouvez le voir dans la dernière commande, il demande toujours le mot de passe ! Comment puis-je corriger cela ? Ubuntu-10.04, OpenSSH_5.3p1

EDIT2 :

Ajout de quelques informations sur le sshd

user@PC:~$ cat /etc/ssh/sshd_config | grep Authentication
# Authentication:
RSAAuthentication yes
PubkeyAuthentication yes
RhostsRSAAuthentication no
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
ChallengeResponseAuthentication no
# PasswordAuthentication yes

EDIT3 : Ajout du résultat de $ssh -vv localhost

$ssh -vv localhost
...
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/user/.ssh/identity
debug1: Offering public key: /home/user/.ssh/id_rsa
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/user/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
user@localhost's password:

0 votes

Cross posted on Super User : superuser.com/questions/336226/

176voto

user2402070 Points 1736

J'ai fait les 3 étapes suivantes pour créer le login sans mot de passe

1. ssh-keygen -t rsa
Press enter for each line 
2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3. chmod og-wx ~/.ssh/authorized_keys

1 votes

Fonctionne comme un charme ! Merci

2 votes

Je pourrais faire un ssh sans mot de passe sans utiliser l'étape 3 ? Quand aurais-je besoin de faire l'étape 3 ?

2 votes

@Rich : c'est juste pour se protéger contre ce que @shipr mentionne dans sa réponse ci-dessous . Si votre ~/.ssh/authorized_keys existait déjà et avait les permissions correctes, (3.) n'est pas nécessaire, mais ne fait pas de mal non plus.

21voto

canesin Points 1777

J'ai découvert le problème.

Exécution du serveur avec débogage :

$sshd -Dd

J'ai constaté qu'il n'était pas en mesure de lire la auth_key

$chmod 750 $HOME

Je l'ai corrigé.

3 votes

Pourquoi n'utilisez-vous pas le mode chmod symbolique ? On n'est plus dans les années 90, n'est-ce pas ?

7 votes

Parce que le mode symbolique est déroutant. Je n'ai aucune idée de ce que serait 750, de mémoire. Quelque chose comme 'u=rwx,g=rx,o=' Quoi que ce soit, ce n'est pas plus facile que 750 ! En fait, 755 perms fonctionne très bien aussi.

1 votes

Très utile. J'ai utilisé /usr/sbin/sshd -ddddD et j'ai obtenu le message suivant Authentication refused: bad ownership or modes for directory /home/...

16voto

shipr Points 1140

Un autre possible Réponse : le fichier authorized_keys peut exister et être lisible. Mais s'il est accessible en écriture par le groupe ou le monde, le mot de passe sera toujours demandé. La réponse à ce problème est

chmod og-wx ~/.ssh/authorized_keys

9voto

Rohit Patwa Points 303

Deux étapes simples :

ssh-keygen -t rsa <Press enter for each line>
ssh-copy-id localhost

Entrez le mot de passe et vous avez terminé.

6voto

swatisinghi Points 326

Effectuez les étapes suivantes

ssh-keygen -t rsa -C "your_email@example.com"
# Creates a new ssh key, using the provided email as a label
# Generating public/private rsa key pair.

Utilisez le fichier par défaut et la phrase de passe vide (il suffit d'appuyer sur la touche Entrée lors des deux prochaines étapes).

# start the ssh-agent in the background
eval "$(ssh-agent -s)"
# Agent pid 59566
ssh-add 

Copiez le contenu de ~/.ssh/id_rsa.pub dans ~/.ssh/authorized_keys

Assurez-vous que les permissions sont les suivantes

 ls -l .ssh/
 total 20
-rw-r--r--. 1 swati swati  399 May  5 14:53 authorized_keys
-rw-r--r--. 1 swati swati  761 Jan 12 15:59 config
-rw-------. 1 swati swati 1671 Jan 12 15:44 id_rsa
-rw-r--r--. 1 swati swati  399 Jan 12 15:44 id_rsa.pub
-rw-r--r--. 1 swati swati  410 Jan 12 15:46 known_hosts 

Assurez-vous également que les permissions pour le répertoire .ssh sont. Ceci est également important

drwx------.   2 swati swati    4096 May  5 14:56 .ssh

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