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
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.
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.
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
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:
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.
N'oubliez pas de signaler à sshd
de recharger toute modification de configuration. Par exemple. kill -HUP $(cat /etc/sshd.pid)
Pour moi, c'était aussi simple que
cat id_rsa.pub >> authorized_keys
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
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 .
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.