L'ajout de la clé publique à ~/.SSH / authorized keys ne me connecte pas automatiquement
j'ai ajouté la clé SSH publique au fichier authorized_keys. ssh localhost
devrait me connecter sans demander le mot de passe.
j'ai fait cela et j'ai essayé de taper ssh localhost
, mais il me demande toujours de taper le mot de passe. Est-il un autre paramètre que j'ai à faire pour le faire fonctionner?
j'ai suivi les instructions pour changer les permissions:
ci-dessous est le résultat si je fais ssh -v localhost
debug1: Reading configuration data /home/john/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to localhost [127.0.0.1] port 22.
debug1: Connection established.
debug1: identity file /home/john/.ssh/identity type 1
debug1: identity file /home/john/.ssh/id_rsa type -1
debug1: identity file /home/john/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_4.7p1 Debian-8ubuntu3
debug1: match: OpenSSH_4.7p1 Debian-8ubuntu3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu3
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Host 'localhost' is known and matches the RSA host key.
debug1: Found key in /home/john/.ssh/known_hosts:12
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering public key: /home/john/.ssh/identity
debug1: Server accepts key: pkalg ssh-rsa blen 149
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
puis il demande passphase après le log ci-dessus. Pourquoi il ne me connecte pas sans mot de passe?
26 réponses
vous devez vérifier les permissions du fichier authorized_keys
et le dossier / dossier parent dans lequel il est situé.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
pour en savoir plus, lisez , à la page .
vous pouvez également avoir besoin de changer/vérifier les permissions de votre répertoire personnel pour supprimer l'accès en écriture pour le groupe et d'autres.
chmod go-w ~
SELinux peut aussi faire en sorte que authorized_keys ne fonctionne pas. Spécialement pour root dans les CentOS 6 et 7. Pas besoin de le désactiver. Une fois que vous avez vérifié que vos permissions sont correctes, vous pouvez corriger cela comme suit:
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
restorecon -R -v /root/.ssh
réglage ssh authorized_keys semble être simple, mais cache certains pièges, j'essaie de comprendre
-- SERVER --
dans /etc/ssh/sshd_config set passwordAuthentication yes
pour laisser temporaire du serveur d'accepter l'authentification par mot de passe
-- CLIENT --
prendre en considération cygwin comme l'émulation linux et installer et exécuter openssh
1. générer des clés privées et publiques (côté client)
# ssh-keygen
ici en appuyant juste ENTRER vous obtenez défaut 2 fichiers " id_rsa " et " id_rsa.pub " ~/.ssh / mais si vous donnez un nom_for_the_key les fichiers générés sont sauvegardés dans votre pwd
2. placez le your_key.pub à l'ordinateur cible ssh-copy-id user_name@host_name
si vous n'avez pas créé la clé par défaut, c'est la première étape pour vous tromper ... vous devez utiliser
ssh-copy-id -i path/to/key_name.pub user_name@host_name
3. logging ssh user_name@host_name
ne fonctionnera que pour id_rsa par défaut donc voici 2nd trap pour vous devez ssh -i path/to/key_name user@host
(utiliser ssh-v... option pour voir ce qui se passe)
si le serveur demande toujours le mot de passe alors vous avez donné smth. à entrer phrase de passe: quand vous avez créé des clés (donc c'est normal)
si ssh n'écoute pas le port par défaut 22 doit utiliser ssh -p port_nr
-- SERVER - - - - -
4. modifier /etc/ssh/sshd_config avoir
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
(cas non satisfait)
cela indique à ssh d'accepter authorized_keys et de regarder dans le répertoire de la maison de l'utilisateur pour Sting key_name écrit .ssh/authorized_keys
5 définir les permissions dans la machine cible
chmod 755 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
également désactiver pass auth
passwordAuthentication no
pour fermer la porte de all ssh root/admin/....@votre_domaine les tentatives de
6 s'assurer que la propriété et la propriété collective de tous les répertoires non-root sont appropriées.
chown -R ~ usernamehere
chgrp -R ~/.ssh/ user
===============================================
7. considérez l'excelent http://www.fail2ban.org
8. extra TUNNEL SSH pour accéder à un MySQL (bind = 127.0.0.1) sever
assurez-vous Également que votre répertoire n'est pas accessible en écriture par d'autres
chmod g-w,o-w /home/USERNAME
la Réponse est volée ici
l'Inscription d'une clé publique .SSH / authorized_keys est nécessaire mais pas suffisant pour que sshd (server) l'accepte. Si votre clé privée est protégée par la phrase de passe, vous devrez donner la phrase de passe à ssh (client) à chaque fois. Ou vous pouvez utiliser ssh-agent, ou un équivalent gnome.
votre trace est compatible avec une clé privée protégée par la phrase de passe. Voir ssh-agent, ou ssh-keygen-p.
attention, SELinux peut aussi déclencher cette erreur, même si toutes les permissions semblent correctes. Le désactiver a fait l'affaire pour moi (insérez les Avertissements habituels sur le fait de le désactiver).
les désespérés peuvent aussi s'assurer qu'ils n'ont pas de nouvelles lignes supplémentaires dans le fichier authorized_keys en raison de la copie d'id_rsa.texte de pub sorti d'un terminal confus.
l'utilisateur est votre nom d'utilisateur
mkdir -p /home/user/.ssh
ssh-keygen -t rsa
touch /home/user/.ssh/authorized_keys
touch /home/user/.ssh/known_hosts
chown -R user:user /home/user/.ssh
chmod 700 /home/user/.ssh
chmod 600 /home/user/.ssh/id*
chmod 644 /home/user/.ssh/id*.pub
chmod 644 /home/user/.ssh/authorized_keys
chmod 644 /home/user/.ssh/known_hosts
la chose qui a fait l'affaire pour moi finalement était de s'assurer que le propriétaire / groupe n'étaient pas root mais utilisateur:
chown -R ~/.ssh/ user
chgrp -R ~/.ssh/ user
commande d'Écriture:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
après avoir fait ceci, assurez-vous que votre dir est comme cela:
drwx------ 2 lab lab 4.0K Mar 13 08:33 .
drwx------ 8 lab lab 4.0K Mar 13 08:07 ..
-rw------- 1 lab lab 436 Mar 13 08:33 authorized_keys
-rw------- 1 lab lab 1.7K Mar 13 07:35 id_rsa
-rw-r--r-- 1 lab lab 413 Mar 13 07:35 id_rsa.pub
un autre conseil à retenir. Depuis v7.0 OpenSSH disables DSS / DSA clés ssh par défaut en raison de leur faiblesse héritage. Donc si vous avez OpenSSH v7.0+, Assurez-vous que votre clé n'est pas ssh-dss
.
si vous êtes coincé avec les clés DSA, vous pouvez réactiver le support localement en mise à jour de vos fichiers
sshd_config
et~/.ssh/config
avec des lignes comme:PubkeyAcceptedKeyTypes=+ssh-dss
assurez-vous que l'utilisateur cible a un mot de passe défini. Lancez passwd username
pour définir un. Ceci était requis pour moi même si le login SSH de mot de passe était désactivé.
une Autre question que vous devez prendre soin. Si votre fichier généré n'est pas par défaut
id_rsa
et id_rsa.pub
vous devez créer .SSH / config fichier et définir manuellement quel fichier id vous allez utiliser avec la connexion.
exemple ici:
host remote_host_name
hostname 172.xx.xx.xx
user my_user
IdentityFile /home/my_user/.ssh/my_user_custom.pub
dans mon cas, je devais mettre mon fichier authorized_keys
dans .openssh
.
Cet emplacement est spécifié dans /etc/ssh/sshd_config
sous l'option AuthorizedKeysFile %h/.ssh/authorized_keys
.
j'ai émis sudo chmod 700 ~/.ssh
et chmod 600 ~/.ssh/authorized_keys
et chmod go-w $HOME $HOME/.ssh
d'en haut et il a corrigé mon problème sur une boîte CentOS7 que j'avais foiré les permissions sur tout en essayant de faire fonctionner les actions samba. Merci
on dirait un problème de permission. Habituellement, il se produit si l'autorisation d'un fichier/répertoire n'est pas correctement configuré. Dans la plupart des cas, il s'agit de ~/.ssh
et ~/.ssh/*
. Dans mon cas, ils sont /home/xxx
.
vous pouvez changer le niveau de log de sshd en modifiant /etc/ssh/sshd_config
(recherche LogLevel
, paramétrez-le à DEBUG
), puis vérifiez la sortie dans /var/log/auth.log
pour voir ce qui s'est passé exactement.
assurez-vous que vous avez copié toute la clé publique de authorized_keys
; le préfixe ssh rsa
est nécessaire pour que la clé fonctionne.
vous devez vérifier les propriétés des fichiers. pour attribuer la propriété:
$ chmod 600 ~/.ssh/sshKey
$ chmod 644 ~/.ssh/sshKey.pub
sur cette note, assurez-vous que votre configuration sshd a -;
PermitRootLogin without-password
défini comme ci-dessus, puis redémarrez sshd(/etc/init.d / sshd restart)
déconnectez-vous et réessayez!
par défaut je crois, c'est -;
PermitRootLogin no
dans mon cas, c'est parce que le groupe de l'utilisateur n'est pas défini dans les AllowGroups du fichier de configuration /etc/sshd_config. Après l'avoir ajouté, Tout fonctionne bien.
mon problème était un fichier AuthorizedKeysFile modifié, alors que l'automatisation pour alimenter /etc/ssh/authorized_keys n'avait pas encore été exécutée.
$sudo grep AuthorizedKeysFile /etc/ssh/sshd_config
#AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysFile /etc/ssh/authorized_keys/%u
j'ai le répertoire de base dans un emplacement non standard et dans sshd
les journaux, j'ai cette ligne:
Could not open authorized keys '/data/home/user1/.ssh/authorized_keys': Permission denied
même si toutes les permissions étaient très bien (voir les autres réponses).
j'ai trouvé une solution ici: http://arstechnica.com/civis/viewtopic.php?p=25813191&sid=0876f069ec2aa5fdcd691a2e2e7242c2#p25813191
dans mon cas particulier:
-
a ajouté une nouvelle ligne dans
/etc/selinux/targeted/contexts/files/file_contexts.homedirs
:-
c'est la ligne d'origine pour les répertoires:
/home/[^/]*/\.ssh(/.*)? unconfined_u:object_r:ssh_home_t:s0
-
c'est ma nouvelle ligne:
/data/home/[^/]*/\.ssh(/.*)? unconfined_u:object_r:ssh_home_t:s0
-
-
suivi d'un
restorecon -r /data/
et unsshd
redémarrage
il suffit de regarder sur /var/log/auth.log sur le" serveur . Définir une verbosité supplémentaire avec - vv du côté du client n'aidera pas, car il est peu probable que le serveur offre trop d'informations à un attaquant éventuel.
j'ai eu ce problème et aucune des autres réponses ne l'a résolu, bien que, bien sûr, les autres réponses sont correct.
dans mon cas, s'est avéré que le répertoire /root
lui-même (pas par exemple /root/.ssh
) avait les mauvaises permissions. I neededed:
chown root.root /root
chmod 700 /root
bien sûr, ces permissions devraient être quelque chose comme cela (peut-être chmod 770
) indépendamment. Toutefois, elle a spécifiquement empêché sshd
de travail, même si /root/.ssh
et /root/.ssh/authorized_keys
avaient tous les deux des permissions et des propriétaires corrects.