web-dev-qa-db-fra.com

Comment SSH à localhost sans mot de passe?

EDIT: Mettre exactement ce qui a été fait.

J'ai besoin de SSH pour localhost sans mot de passe, la manière 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:~$ 

Comme vous pouvez le voir dans la dernière commande, il demande toujours le mot de passe !!! Comment puis-je résoudre ce problème ?? Ubuntu-10.04, OpenSSH_5.3p1

EDIT2:

Ajout d'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
#KerberosAuthentication no
#GSSAPIAuthentication no
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.

EDIT3: résultat d'annonce 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: 

EDIT4:

Il suffit de vérifier si les fichiers sont les mêmes et le md5sum d'accord

17
Canesin

J'ai découvert le problème.

Exécuter le serveur avec le débogage:

$sshd -Dd

J'ai trouvé qu'il n'était pas capable de lire l'auth_key

$chmod 750 $HOME

Fixe le.

3
Canesin

Tout d’abord, vous devez comprendre ce que vous faites:

user@PC:~$ cat .ssh/id_rsa.pub | ssh localhost 'cat >> .ssh/authorized_keys'

Vous copiez la clé publique .ssh/id_rsa.pub via ssh sur le même hôte (c'est ce que localhost est, le même hôte). Si vous remplacez localhost par un autre hôte, cela aurait plus de sens (mais si vous essayez cela pour apprendre à le faire, c'est bien).

Une fois que vous avez une copie de votre clé publique sur l'hôte distant (ou du même ordinateur que vous êtes), vous devez vous assurer de l'utiliser pour l'authentification, en appelant ssh-agent/ssh-add:

$ eval `ssh-agent`
$ ssh-add

Ensuite, si vous avez fourni une phrase secrète, il vous sera demandé de la saisir après ssh-add. Si vous avez généré une clé privée sans phrase secrète, c'est tout.

10
Torian

Faire les étapes suivantes

ssh-keygen -t rsa -C "[email protected]"
# 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 une phrase secrète vide (appuyez simplement sur Entrée au cours des 2 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/allowed_keys

Assurez-vous que les autorisations 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 autorisations pour le répertoire .ssh sont. C'est aussi important

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

Simplifier la configuration du serveur

Je pense que vous devrez peut-être désactiver l'authentification par mot de passe. C'est un sshd_config que j'utilise

Port 22
Protocol 2
PermitRootLogin no
StrictModes yes
PasswordAuthentication no
ChallengeResponseAuthentication no
MaxStartups 2
AllowUsers peter paul mary
LogLevel VERBOSE

Essayez d’abord quelque chose de minimal, puis ajoutez-le car vous avez besoin de fonctionnalités supplémentaires.


Mettre à jour:

Vérifier les journaux du serveur

Sur votre EDIT3, je constate que l’authentification par clé publique échoue avant que le client ne tente une authentification par mot de passe. Le syslog de votre serveur peut contenir des messages de sshd qui éclaircissent cela.

Recharger les configs modifiées

N'oubliez pas de signaler à sshd de recharger toute modification de configuration. Par exemple. kill -HUP $(cat /etc/sshd.pid)

1
RedGrittyBrick

Pour moi, c'était aussi simple que

cat id_rsa.pub >> authorized_keys
0
user695025

J'ai eu le même problème, j'ai suivi 3 étapes pour créer le mot de passe moins de connexion et cela fonctionne bien

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
0
Hadi Rahjoo

Une autre solution pour SELinux de Red Hat Enterprise Linux 6.5 empêchant sshd de lire $ HOME/.ssh consiste à utiliser restorecon. Voir mon répondeur ici https://superuser.com/a/764020/213743 .

0
buzz3791

Concernant le post ci-dessus, tout en faisant face au même problème, je viens de changer de ligne

Authentification par mot de passe non

dans le fichier/etc/ssh/sshd_config et cela a fonctionné.

De plus, il vaut peut-être mieux utiliser

service sshd redémarrer

pour recharger les modifications de configuration sshd.

0
Nicolas