Je travaille à partir de l'URL que j'ai trouvé ici:
Mon client ssh est un ordinateur de bureau Ubuntu 64 bits 11.10 et mon serveur est Centos 6.2 64 bits. J'ai suivi les instructions. Je reçois toujours une invite de mot de passe sur ssh.
Je ne sais pas quoi faire ensuite.
chmod 700
/var/log/auth.log
vous saurez pourquoi la connexion échoue./var/log/secure
.0700
était la réponse, mais quand je l'ai faitssh -v
côté client, cela n'indiquait pas d'erreur liée à la raison pour laquelle la clé n'avait pas été acceptée. Comment s'attendent-ils à ce que nous diagnostiquions les problèmes sans informations d'erreur du serveur?Réponses:
Assurez-vous que les autorisations sur le
~/.ssh
répertoire et son contenu sont correctes. Lorsque j'ai configuré pour la première fois l'authentification de ma clé ssh, le~/.ssh
dossier n'était pas correctement configuré et il m'a hurlé dessus.~
, votre~/.ssh
répertoire et le~/.ssh/authorized_keys
fichier sur la machine distante doit être accessible en écriture que par vous:rwx------
etrwxr-xr-x
sont très bien, maisrwxrwx---
est pas good¹, même si vous êtes le seul utilisateur de votre groupe (si vous préférez les modes numériques:700
ou755
, non775
) .Si
~/.ssh
ouauthorized_keys
est un lien symbolique, le chemin canonique (avec les liens symboliques développés) est vérifié .~/.ssh/authorized_keys
fichier (sur la machine distante) doit être lisible (au moins 400), mais vous aurez besoin qu'il soit également accessible en écriture (600) si vous voulez y ajouter d'autres clés.rw-------
, par exemple600
.restorecon -R -v ~/.ssh
(voir par exemple le bogue Ubuntu 965663 et le rapport de bogue Debian n ° 658675 ; cela est corrigé dans CentOS 6 ).¹ Sauf sur certaines distributions (Debian et dérivés) qui ont corrigé le code pour permettre l'écriture des groupes si vous êtes le seul utilisateur de votre groupe.
la source
/home/USER
doit être700
ou755
ssh -v user@host
.chmod -R 700 ~/.ssh
travaillé pour moi pour répondre aux contraintes de cette réponse (RHEL 7)Si vous avez un accès root au serveur, le moyen le plus simple de résoudre de tels problèmes consiste à exécuter sshd en mode débogage, en émettant quelque chose comme
/usr/sbin/sshd -d -p 2222
sur le serveur (chemin complet de l'exécutable sshd requis,which sshd
peut aider), puis en vous connectant à partir du clientssh -p 2222 user@host
. Cela forcera le démon SSH à rester au premier plan et à afficher des informations de débogage sur chaque connexion. Cherchez quelque chose commeS'il n'est pas possible d'utiliser un autre port, vous pouvez arrêter temporairement le démon SSH et le remplacer par un en mode débogage. L'arrêt du démon SSH ne supprime pas les connexions existantes. Il est donc possible d'effectuer cette opération via un terminal distant, mais présente des risques. Si la connexion est interrompue au moment où le remplacement du débogage ne s'exécute pas, vous êtes bloqué hors de la machine. jusqu'à ce que vous puissiez le redémarrer. Les commandes requises:
(Selon votre distribution Linux, la première / dernière ligne peut être
systemctl stop sshd.service
/ à lasystemctl start sshd.service
place.)la source
sshd -d
, mais ça échoue une fois que je coursservice sshd start
. Je suis sûr que c'est simple, mais je ne suis pas un gourou de Linux. Des pensées?Votre répertoire personnel est-il crypté? Si oui, pour votre première session SSH, vous devrez fournir un mot de passe. La deuxième session ssh sur le même serveur fonctionne avec la clé auth. Si tel est le cas, vous pouvez déplacer votre
authorized_keys
fichier dans un répertoire non chiffré et modifier le chemin~/.ssh/config
.Ce que j'ai fini par faire est de créer un
/etc/ssh/username
dossier, appartenant à un nom d'utilisateur, avec les autorisations appropriées, et d'y placer leauthorized_keys
fichier. Puis modifié la directive AuthorizedKeysFile en/etc/ssh/config
:Cela permet à plusieurs utilisateurs d'avoir cet accès ssh sans compromettre les autorisations.
la source
Après avoir copié les clés sur la machine distante et les avoir placées à l'intérieur,
authorized_keys
vous devez faire quelque chose comme ceci:la source
ssh-add -L
Essayez juste ces commandes suivantes
ssh-keygen
Appuyez sur la touche Entrée jusqu'à ce que vous obteniez l'invite.
ssh-copy-id -i root@ip_address
(Il vous sera demandé une fois le mot de passe du système hôte)
ssh root@ip_address
Maintenant, vous devriez pouvoir vous connecter sans mot de passe
la source
J'ai rencontré des difficultés lorsque le répertoire de base de la télécommande n'a pas les privilèges appropriés. Dans mon cas, l'utilisateur a changé le répertoire d'accueil en 777 pour un accès local avec dans l'équipe. La machine ne pouvait plus se connecter avec les clés SSH. J'ai changé l'autorisation à 744 et cela a recommencé à fonctionner.
la source
SELinux sur RedHat / CentOS 6 a un problème d’authentification des clés publiques , probablement lorsque certains des fichiers sont créés, mais selinux ne configure pas correctement ses listes de contrôle d’accès.
Pour corriger manuellement les listes de contrôle d'accès SElinux pour l'utilisateur root:
la source
ssh root@mymachine
connectermymachine
à CentOS6 sans problème, mais j’ai un utilisateur de privilège inférieur que je préférerais utiliser, maisssh regularUser@mymachine
qui m’invite toujours à entrer un mot de passe. pensées?Nous avons rencontré le même problème et nous avons suivi les étapes de la réponse. Mais cela n'a toujours pas fonctionné pour nous. Notre problème était que la connexion fonctionnait avec un client mais pas avec un autre (le répertoire .ssh était monté sur NFS et les deux clients utilisaient les mêmes clés).
Nous avons donc dû aller plus loin. En exécutant la commande ssh en mode commenté, vous obtenez beaucoup d'informations.
Nous avons découvert que la clé par défaut (id_rsa) n'était pas acceptée et que le client ssh offrait une clé correspondant au nom d'hôte du client:
Évidemment, cela ne fonctionnera avec aucun autre client.
La solution dans notre cas a donc été de basculer la clé rsa par défaut sur celle contenant l'utilisateur @ myclient. Lorsqu'une clé est définie par défaut, il n'y a pas de vérification du nom du client.
Ensuite, nous avons rencontré un autre problème, après le changement. Apparemment, les clés sont mises en cache dans l'agent ssh local et l'erreur suivante apparaît dans le journal de débogage:
Cela a été résolu en rechargeant les clés sur l'agent ssh:
la source
Ce serait une configuration manquante SSH à la fin du serveur. Le fichier sshd_config côté serveur doit être modifié. Situé dans
/etc/ssh/sshd_config
. Dans ce fichier, changez les variables'oui' à 'non' pour ChallengeResponseAuthentication, PasswordAuthentication, UsePAM
'non' à 'oui' pour PubkeyAuthentication
Basé sur http://kaotickreation.com/2008/05/21/disable-ssh-password-authentication-for-added-security/
la source
vi /etc/ssh/sshd_config
, ajoutez l'utilisateur xxx à la liste AllowUsers,service sshd restart
*** BEWARE qui redémarre le service sshd avec un fichier sshd_config incorrect peut vous empêcher de sortir de la boîte!? *** Ça a marché.Assurez-vous que les
AuthorizedKeysFile
points pointent au bon endroit, utilisez-le%u
comme espace réservé pour le nom d'utilisateur:Il se peut que vous deviez simplement commenter la ligne:
AuthorizedKeysFile .ssh / registered_keys
Notez que vous devez recharger le service ssh pour que les modifications aient lieu:
la source
Deux commentaires: cela écrasera le fichier d'origine. Je copierais simplement la clé publique générée et ferais quelque chose comme:
Ceci ajoutera la clé que vous souhaitez utiliser à la liste de clés préexistante. De plus, certains systèmes utilisent le fichier
authorized_keys2
, il est donc judicieux d’établir un lien solide pointant entreauthorized_keys
etauthorized_keys2
, juste au cas où.la source
Ma solution a été que le compte était verrouillé. Message trouvé dans / var / log / secure: utilisateur non autorisé car le compte est verrouillé Solution: donnez un nouveau mot de passe à l'utilisateur.
la source
/etc/shadow
pour cet utilisateur de!
à*
. Après cela, l'authentification par mot de passe est toujours impossible, mais l'utilisateur n'est plus verrouillé.J'ai rencontré un problème similaire et ai suivi les étapes en utilisant le mode débogage.
Cela a montré le résultat suivant
C'était vraiment déroutant
Il a montré que le répertoire racine avait des autorisations pour chacun. Nous l'avons modifié afin que d'autres ne disposent pas d'autorisations.
L'authentification par clé a commencé à fonctionner.
la source
rsync -av ./root/ root@THE_HOST:/root
à télécharger des fichiers de mon répertoire de travail local. Ce problème se produit (en fait, au début, je ne l’avais pas remarqué. Après l’échec des tâches périodiques d’autres hôtes le lendemain matin, j’ai commencé à chercher la raison.) . Larsync -av ./root/ root@THE_HOST:/root
commande a changé le propriétaire et l'autorisation du/root
répertoire de l'hôte distant. Correction de l'autorisation, problème résolu.Failed publickey for root from 135.250.24.32 port 54553 ssh2
Je reçois le même message et le même problème lorsque j'ai oublié d'ajouter la clé publique à un hôteauthorized_keys
. Ajoutant ce commentaire comme dans mon cas, je réalise généralement mon erreur après avoir vérifié le débogage et toutes les autorisations plus les fichiers de configuration n °: o <Dans le fichier / etc / selinux / config, modifier SELINUX en désactivant l’application de ssh sans mot de passe fonctionne correctement.
Plus tôt, je suis capable de le faire d'une manière. Maintenant, à partir de tous les deux, je suis capable de faire du SSH sans mot de passe.
la source
Une des choses que j'ai eu tort est la propriété de mon répertoire personnel sur le système serveur. Le système du serveur était réglé sur default: default donc je:
Et ça a fonctionné. Une autre solution avantageuse consiste à désactiver StrictModes: StirctModes no. dans sshd_config. Cela vous indiquera au moins si l'échange de clés et les protocoles de connexion sont bons. Ensuite, vous pouvez aller chasser les mauvaises autorisations.
la source
Pour moi, la solution était opposée à celle de Wojtek Rzepala : je n’avais pas remarqué que j’utilisais encore
authorized_keys2
, ce qui est devenu obsolète . Ma configuration ssh a cessé de fonctionner à un moment donné, probablement lorsque le serveur a été mis à jour. Renommer.ssh/authorized_keys2
comme.ssh/authorized_keys
résolu le problème.D'oh!
la source
Dans le passé, je suis tombé sur des tutoriels décrivant comment réaliser une configuration ssh sans mot de passe, mais certains ont malheureusement tort.
Recommençons et vérifions chaque étape:
ssh-keygen -t rsa
Les clés publique et privée (
id_rsa.pub
etid_rsa
) seront automatiquement stockées dans le~/.ssh/
répertoire.La configuration sera plus facile si vous utilisez une phrase secrète vide. Si vous ne le souhaitez pas, suivez quand même ce guide, mais vérifiez également le point ci-dessous.
ssh-copy-id user@server
la clé publique du client sera copiée à l'emplacement du serveur
~/.ssh/authorized_keys
.ssh user@server
Maintenant, si cela ne fonctionne toujours pas après les 3 étapes décrites, essayons ce qui suit:
~/ssh
autorisations de dossier sur le client et le serveur ./etc/ssh/sshd_config
le serveur pour vous assurer queRSAAuthentication
,PubkeyAuthentication
et que lesUsePAM
options ne sont pas désactivées, elles peuvent être activées par défaut avecyes
.ssh-agent
etssh-add
pour obtenir des connexions sans mot de passe de votre session./var/log/auth.log
sur le serveur pour trouver la question pourquoi l' authentification par clé est ignorée du tout.la source
J'avais exactement le même problème avec PuTTY qui se connecte à une machine Ubuntu 16.04. C'était étonnant, car le programme psc de PuTTY fonctionnait correctement avec la même clé (et la même clé fonctionnait dans PuTTY pour se connecter à un autre hôte).
Grâce au précieux commentaire de @UtahJarhead, j'ai vérifié mon fichier /var/log/auth.log et découvert ce qui suit:
Il s'avère que les versions plus récentes d'OpenSSH n'acceptent pas les clés DSA par défaut. Une fois que je suis passé d'un DSA à une clé RSA, cela a bien fonctionné.
Une autre approche: cette question explique comment configurer le serveur SSH pour accepter les clés DSA: https://superuser.com/questions/1016989/ssh-dsa-keys-no-longer-work-for-password-less-authentication?lq = 1
la source
Ces étapes devraient vous aider. Je l’utilise régulièrement sur de nombreuses machines Ubuntu 10.04 64 bits.
vous pouvez mettre cela dans un script avec quelques invites et l'invoquer comme
la source
ssh-copy-id
qui fait les deux dernières étapes automatiquement.mkdir
vous devriez aussi ajouter làchmod 700 .ssh
et d'ailleurs, vous n'avez pas besoin d'être aussi prolixe~/.ssh
,.ssh
c'est suffisant puisque les commandes sont exécutées dans le répertoire personnel quand mêmeJ'ai eu le même problème avec SSH. Dans mon cas, le problème était que j'avais installé hadoop cloudera (à partir de rpm sur centos 6) et créé un utilisateur hdfs avec un répertoire personnel.
/var/lib/hadoop-hdfs
(pas standard/home/hdfs
).J'ai changé dans / etc / passwd
/var/lib/hadoop-hdfs
en/home/hdfs
, j'ai déplacé le répertoire de base vers un nouvel emplacement et je peux maintenant me connecter avec une authentification par clé publique.la source
Je viens d'avoir ce même problème, et pour moi la solution était de régler
UsePAM
àno
. Vous voyez, même avecPasswordAuthentication
set tono
, vous obtiendrez toujourskeyboard-interactive
, et dans mon cas, mon programme ssh local a continué à utiliser ce paramètre par défaut, pour une raison quelconque.Contexte supplémentaire pour aider les personnes dans la même situation: je me connecte depuis un hôte exécutant Dropbear vers un hôte exécutant OpenSSH. Avec
PasswordAuthentication
etUsePAM
tous les deuxno
sur la machine distante, je recevrai le message suivant si j'entressh user@server
:En fournissant le fichier d'identité avec
-i
, tout fonctionne comme prévu.Il peut y avoir un peu plus d'informations ici.
la source
Après avoir vérifié les autorisations et essayé plusieurs des solutions répertoriées ici, j'ai finalement supprimé le répertoire ssh du serveur, puis à nouveau configuré ma clé publique.
Commandes serveur:
Commandes locales:
la source
Au serveur:
C'était
directory permission issue
. Il était 777 au serveur, doncI changed it back to 700
. C'estfixed
mon problème avecssh password less login failure
même après la copie$USER/.ssh/id_rsa.pub
sur le serveur$USER/.ssh/authorized_keys
.la source
Une autre option est une variante de l » @Jagadish réponse : au
strace
démon ssh.Il a l'avantage important de ne pas avoir besoin d'arrêter sshd, ce qui peut entraîner un verrouillage complet si quelque chose se passe mal.
Premièrement, nous trouvons le pid du processus sshd principal. Ici nous pouvons le voir en exécutant un fichier
pstree -pa|less
.Après avoir su que le pid est de 633, on peut
strace
le suivre, à la suite de ses enfants:Le résultat sera que tout ce que ce sshd et ses processus enfants ont fait sera intégré dans le fichier nommé
sux
dans le répertoire local.Puis reproduisez le problème.
Il y aura une liste massive de journaux d'appels dans le noyau, ce qui est pour la plupart incompréhensible / non pertinent pour nous, mais pas partout. Dans mon cas, l’important était le suivant:
Sshd a essayé de consigner le message. L' utilisateur cica n'est pas autorisé car le compte est verrouillé . Il ne pouvait pas le faire, car la journalisation n'est pas assez détaillée pour cela. Mais nous savons déjà que la clé publique a été rejetée car le compte était bloqué.
Ce n'est pas encore une solution - il faut maintenant google, ce qui signifie un "compte verrouillé" dans le cas de sshd. Ce sera probablement de la magie triviale
/etc/passwd
,/etc/shadow
mais l’essentiel est fait: le problème n’est pas mystérieux, mais facile à mettre au point et à mettre au point.la source
Dans mon cas, j'avais toutes les autorisations nécessaires et même en exécutant ssh avec l'option -vvv, je ne pouvais pas comprendre le problème.
J'ai donc généré un nouveau certificat sur l'hôte distant
et copié les clés générées sur la machine locale et ajouté une nouvelle clé publique à ~ / .ssh / allowed_keys sur l'hôte distant
L'utilisation des clés générées à partir d'une connexion à une machine hôte distante fonctionne désormais. Donc, si d'autres solutions échouent, c'est une autre chose à essayer.
la source
Mon scénario était que j'ai un serveur NAS sur lequel j'ai créé un
backupbot
utilisateur, après la création de mon compte principal, qui a été capable de se connecter pour créer initialement l'backupbot
utilisateur. Après avoir manipulésudo vim /etc/ssh/sshd_config
et créé l'backupbot
utilisateur, vousvim
pouvez créer, au moins sur Ubuntu 16.04, et en fonction de votre~/.vimrc
configuration, un fichier d'échange laissé par l'édition de votre session vim/etc/ssh/sshd_config
.Vérifiez si:
/etc/ssh/.sshd_config.swp
existe, et s'il le supprime et redémarrez lesshd
démon:Cela a résolu mon problème comme par magie. J'avais précédemment vérifié toutes mes autorisations et même les empreintes RSA des clés publique et privée. C'est étrange et probablement un bug avec
sshd
, en particulier cette version:la source