Le serveur OpenSSH refuse d'accepter l'authentification par clé

13

J'ai essayé d'utiliser l'authentification par clé publique sur mon nouveau serveur et je suis tombé sur ce problème.

$ ssh -v -i .ssh/server 192.168.1.100
OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data .ssh/config
debug1: Applying options for *
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug1: Connecting to 192.168.1.100 [192.168.1.100] port 22.
debug1: Connection established.
debug1: identity file .ssh/server type -1
debug1: identity file .ssh/server-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.8p1 Debian-1ubuntu3
debug1: match: OpenSSH_5.8p1 Debian-1ubuntu3 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.6
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr 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 '192.168.1.100' is known and matches the RSA host key.
debug1: Found key in .ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
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: Trying private key: .ssh/server
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: password

puis je dois entrer mon mot de passe pour me connecter.

Mais, si j'ai déjà une session connectée à ce serveur (qui est connecté par mot de passe), la connexion suivante utilise l'authentification par clé pour éviter la saisie du mot de passe.

S'il n'y a pas de connexion SSH déjà établie, je ne peux pas me connecter sans mot de passe d'entrée.

C'est vraiment bizarre pour moi, j'ai vérifié le MD5 /usr/sbin/sshdentre le nouveau serveur et l'autre serveur normal, c'est pareil. Ensuite, je viens de copier le /etc/ssh/sshd_configdepuis l'autre serveur normal vers le nouveau serveur et j'ai couru service ssh restart. Le problème existe toujours.

Comment suis-je censé résoudre ce problème?

lxyu
la source

Réponses:

10

Vérifiez que votre .sshdossier et les fichiers qu'il contient sur la machine client ne sont lisibles que par le propriétaire ( chmod -R 600 .ssh) et que le propriétaire est correct pour le dossier et les fichiers (utilisez la chowncommande si nécessaire).

Vérifiez également le authorized_keysdossier et le fichier sur le serveur (probablement dans /root/.sshou le dossier personnel de l'utilisateur qui tente de se connecter) pour vous assurer que leurs autorisations et leur propriétaire sont définis de la même manière.


Edit: basé sur plus de commentaires (et quelques suppositions!) - pouvez-vous vérifier /etc/ssh/sshd_configet voir si le paramètre suivant est défini comme ci-dessous. Sinon, essayez de le modifier.

AuthorizedKeysFile /home/%u/.ssh/authorized_keys

Remarque, cela suppose que vous ne vous connectez pas à distance en tant que root

Linker3000
la source
mon .ssh est 700 et les fichiers en .ssh est 600, et j'ai revérifié ~ / .ssh / authorized_keys sur la machine distante. La configuration de l'authentification par clé publique est la première chose que je fais après avoir installé le système, il est donc peu probable qu'il soit gâché par une autre opération. btw, problème toujours ..
lxyu
OK - j'ajoute quelque chose à ma réponse sur cette base.
Linker3000
il y a une ligne de "#AuthorizedKeysFile% h / .ssh / authorized_keys". J'ai essayé de le commenter, mais sans utilité .. btw, le même '/ usr / sbin / sshd' avec le même 'sshd_config', comment ils se comportent différemment?
lxyu
Enfin, j'ai réinstallé ubuntu, puis j'ai installé openssh-server en une minute et ça fonctionne bien maintenant ... Je ne sais toujours pas ce qui ne va pas. :(
lxyu
Parfois, il est vraiment difficile de savoir quel est le problème. Une fois, j'ai mal orthographié les clés autorisées en tant que clés autorisées. Il me fallait environ une heure pour résoudre ce problème. Avez-vous vu l'orthographe? C'est vraiment délicat! :-)
2012
4

J'ai corrigé mon propre cas de cette erreur en supprimant id_rsa.pubde .ssh.

J'avais copié à id_rsapartir d'une autre machine et l' ai distribué à plusieurs clients factices. Par conséquent, id_rsaet id_rsa.pubétaient en fait des clés différentes qui empêchaient l'utilisation de id_rsatout à fait.

Aucun message d'erreur ne l'indique clairement cependant. Je l'ai compris essentiellement par accident, en essayant de mettre les différentes machines dans un état identique.

ketarax
la source
3

D'après ma découverte, la moindre autorisation du directeur de la maison cible est 750. Si le bit du monde ne l'est pas 0, cela ne fonctionnera pas.

Par exemple. pour le répertoire racine:

drwxr-x--- 3 root root 4096 Jul 20 11:57 root

Vient ensuite /root/.ssh

drwx------  2 root root  4096 Jul 17 03:28 .ssh

alors /root/.ssh/authorized_keys

-rw------- 1 root root 1179 Jul 17 03:28 authorized_keys
David Wee
la source
3

Dans mon cas, les autorisations sur le répertoire personnel étaient 775au lieu de 0755ou inférieures.

Le chemin complet vers le fichier authorized_keys, c'est-à-dire /home/user/.ssh/doit être 0755ou inférieur.

Aditya Advani
la source
MERCI Je viens de lire un mal de tête que j'ai depuis une semaine maintenant. La plupart des gens ne mentionnent que le dossier .ssh (700) et les authorized_keys (600)
Jonathan Komar
2

Après beaucoup de soucis, j'ai obtenu la solution du problème:

Le répertoire personnel de l'utilisateur ne doit pas avoir d'autorisation 777ou être accessible en écriture dans le monde. Si c'est le cas, la vérification de la clé SSH échouera et vous devrez mettre un mot de passe pour la connexion.

user2357653
la source
1

Assurez-vous simplement que le compte auquel vous essayez de ssh est un utilisateur avec un mot de passe sur le serveur distant. Je me suis juste cogné la tête contre le mur pendant une demi-heure avant de trouver cette réponse ici: /programming//a/14421105/758174

Pierre D
la source
1

Si /etc/ssh/sshd_configla ligne suivante n'est pas commentée, votre configuration SSH autorise uniquement une liste fixe d'utilisateurs à ssh dans le système et vous devez ajouter de nouveaux comptes à la liste:

AllowUsers root user1 user2 user3

Tout autre utilisateur que ceux répertoriés ci-dessus essayant de se connecter via SSH recevrait ces messages d'erreur cryptiques:

Roaming not allowed by server
Tilo
la source
0

J'ai découvert qu'après avoir changé mon nom d'utilisateur et de groupe (mais pas les ID) dans /etc/passwdet /etc/group, mais en oubliant de changer en /etc/shadowconséquence, j'ai reçu le même message "Pas d'itinérance autorisée".

andrew
la source