7 votes

Echec de la connexion SSH avec la clé publique

Sur localhost exécutant le service sshd. Création de deux paires de clés rsa pour root y user1 en utilisant ssh-keygen. Copie de root/.ssh/id_rsa.pub vers user1/.ssh/id_rsa.pub. J'ai changé les permissions en 600. Essayez ssh -l user1 localhost y ssh -l root localhost mais les deux ont échoué avec Permission refusée (publickey,keyboard-interactive). . Dois-je copier la clé publique sur ~/.ssh pour les deux utilisateurs ? Quel est le problème avec la configuration ? Pourquoi je ne peux pas me connecter à localhost ?

Fichier /etc/ssh/sshd_config :

RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication yes
UsePAM no
AllowUsers user1 root
PermitRootLogin yes

Dans le dossier /etc/ssh/ssh_config sont des lignes non-commentées :

   RSAAuthentication yes
   PasswordAuthentication no
   ForwardX11 no
    SendEnv LANG LC_*
    HashKnownHosts yes
    GSSAPIAuthentication yes
    GSSAPIDelegateCredentials no
   PubkeyAuthentication yes

EDIT 1

J'essaie de me connecter à localhost. Je dois être en mesure de me connecter à user1 en utilisant uniquement la clé publique tout en étant capable de me connecter en tant que root avec la clé publique et/ou le mot de passe.


EDIT 2

J'ai copié cp ~/.ssh/id_rsa.pub /home/user1/.ssh/authorized_keys . Permissions modifiées chmod -R 700 ~/.ssh y chmod -R 700 /home/user1/.ssh . J'ai redémarré sshd avec 'service ssh restart'. Mais cela ne semble pas fonctionner.


EDIT 4

root@ubuntu:~# ssh-copy-id user1@localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is 34:29:b6:1b:fe:84:eb:82:85:77:87:f6:25:39:61:5a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
Permission denied (publickey,keyboard-interactive).

root@ubuntu:~# ssh-copy-id root@localhost
Permission denied (publickey,keyboard-interactive).

Journal :

# tail /var/log/auth.log

... ubuntu sshd[8476]: User root not allowed because account is locked

Un bon article sur le dépannage de SSH : Problèmes et solutions

7voto

Harm de Wit Points 171

J'ai rencontré ce problème lorsque j'ai essayé de me connecter à un compte qui n'a pas de mot de passe, même si j'utilise l'authentification par paire de clés SSH et que la connexion par mot de passe est désactivée. La solution a été de définir un mot de passe en utilisant mon compte root :

passwd user1
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

4voto

micmcg Points 1449
  1. Lorsque vous rencontrez un problème de connexion à un serveur, il est toujours préférable d'ajouter l'option -v le drapeau, par exemple

    $ ssh -v host -l user
  2. Dans les deux cas ci-dessus, la clé publique ( id_rsa.pub ) doit être ajouté au fichier " .ssh/authorized_keys " de l'utilisateur distant. Dans votre cas ci-dessus, à la fois pour root et user1. Cela peut facilement être fait via la commande ssh-copy-id commandement.

  3. /var/log/secure contient des indices sur la raison pour laquelle la connexion n'a pas réussi.

  4. Les permissions du répertoire doivent être 700 [rwx] (et non 600) [rw-].

2voto

fartheraway Points 4886

J'ai rencontré un problème similaire il y a quelque temps en essayant de faire un

chmod -R 600 ~/.ssh 

Apparemment, si les permissions des fichiers sont correctes mais que celles des répertoires ne le sont pas, le même type d'erreur de permissions peut se produire.

Je pense également que vous devez renommer le fichier id_rsa.pub en authorized_keys.

1voto

Peter Points 802

Quelques notes : Puisque vous avez spécifiquement désactivé l'authentification par mot de passe, vous ne pouvez pas vous connecter avec un mot de passe. Je pense que vous devez configurer les utilisateurs autorisés d'une autre manière (Match User est probablement la meilleure façon de procéder). De plus, vous devez autoriser spécifiquement l'utilisateur root (PermitRootLogin réglé sur oui).

1voto

XTL Points 189

Il serait judicieux de nous donner un peu plus d'informations sur les paramètres dans /etc/ssh/sshd_config en particulier StrictModes ( grep StrictModes /etc/ssh/sshd_config ). StrictModes est le paramètre qui régit la sensibilité sshd réagit aux permissions des fichiers et des dossiers de chaque utilisateur. ~/.ssh y ~/.ssh/authorized_keys . Vous ne nous avez pas non plus donné le décor de AuthorizedKeysFile dans votre sshd_config . Très pertinent, si votre serveur SSH cherche le fichier ailleurs que là où vous l'avez mis.

Mais en dehors des réponses données jusqu'à présent, il peut y avoir une multitude de raisons à cela. Le problème est que, même si vous avez essayé, il n'y a pas assez d'informations pour deviner avec certitude ce qui ne va pas.

Une autre chose peut être les restrictions PAM ( UsePAM sur sshd_config ). Ubuntu l'a fait à un moment donné. Si le compte utilisateur n'avait pas de mot de passe défini (authentification par clé publique uniquement), il n'était pas autorisé à entrer.

Mais laissez-moi vous donner une méthode générique pour déboguer de tels problèmes.

Dépannage générique de sshd

Ce que je trouve généralement très utile dans de tels cas est de commencer par sshd sans le laisser se démoniser ("passer en arrière-plan et se détacher du terminal"). Souvent, les journaux ne seront pas très utiles, en particulier lorsque vous avez une erreur de configuration (ce qui n'est pas le cas le plus évident).

Vous le démarrez depuis le terminal comme ça :

# $(which sshd) -Ddp 10222

Vous obtiendrez ainsi de nombreux résultats de débogage qui n'apparaîtraient pas autrement (sans l'option -d ) ou finir dans les bûches si vous avez de la chance.

NB : le site $(which sshd) est la meilleure méthode pour satisfaire sshd l'exigence d'un chemin absolu. Sinon, vous obtiendrez l'erreur suivante : sshd re-exec requires execution with an absolute path . Le site -p 10222 fait sshd écouter sur ce port alternatif, en prenant le pas sur le fichier de configuration - ceci afin de ne pas entrer en conflit avec d'éventuelles exécutions de sshd instances. Assurez-vous de choisir un port libre ici.

Cette méthode m'a aidé à de nombreuses reprises à trouver des problèmes, qu'il s'agisse de problèmes d'authentification, de performances ou d'autres types de problèmes. Pour obtenir une sortie vraiment verbeuse à stdout utiliser $(which sshd) -Ddddp 10222 (notez l'ajout de dd pour augmenter la verbosité). Pour plus de facilité de débogage, consultez man sshd .

Du côté du client ssh peut prendre -v (jusqu'à -vvv ) pour être très explicite sur ce qu'il fait.


La ligne de journal

... ubuntu sshd[8476]: User root not allowed because account is locked

laisse entendre que c'est le problème, alors cours :

sudo passwd -u root

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X