2 votes

Le serveur OpenSSH refuse d'accepter l'authentification par clé tant que l'utilisateur n'est pas connecté localement au serveur

Mon serveur fonctionne sous Ubuntu-Server et a OpenSSH-Server installé dessus. J'ai configuré le fichier /etc/ssh/sshd_config pour accepter et nécessiter des clés rsa, il recherche les clés dans le fichier 'AuthorizedKeys ~/.ssh/authorized_keys'. Dans ce fichier, j'ai deux clés publiques distinctes, l'une créée à l'aide de Putty que j'utilise avec WinSCP et l'autre créée à partir de Secure Shell Client.

Mon problème est que je dois me connecter en tant que mon utilisateur sur le serveur avant que l'authentification ne fonctionne. Si je devais redémarrer le serveur à distance, puis essayer de m'y connecter en ssh, j'obtiendrais une erreur indiquant que ma clé n'a pas pu être authentifiée et que l'accès m'a été refusé. Dès que je me connecte localement au serveur, je peux ensuite me connecter en ssh à distance tant que cet utilisateur reste connecté.

Avez-vous une idée de ce que je pourrais faire de mal ici? Je pense que j'ai configuré incorrectement le paramètre AuthorizedKeys dans le fichier /etc/ssh/sshd_config

3voto

akira Points 58339

Alors, comme je le pressentais : Votre $HOME se trouve en fait dans un conteneur chiffré qui n'est ouvert qu'au moment de la connexion. Afin de vous laisser accéder au système, le sshd souhaite la clé publique avant de vous laisser entrer, créant ainsi une sorte de problème de l’œuf et de la poule.

Une option pour contourner ce problème est de déplacer le fichier .ssh/authorized_keys vers un autre endroit en apportant la modification suivante au fichier /etc/ssh/sshd_config :

 AuthorizedKeysFile      /home/.ssh/%u

Ainsi, l'utilisateur joe a ses clés publiques dans /home/.ssh/joe, etc.

Une autre idée intéressante à essayer est la suivante :

$> login

$> cp .ssh/authorized_keys /tmp/
$> logout

$> mkdir /home/joe/.ssh/
$> cp /tmp/authorized_keys /home/joe/.ssh/

L'idée est d'extraire le fichier authorized_keys du conteneur chiffré (comme dans la première idée) et de placer ce fichier non chiffré à l'endroit approprié. Lorsque vous vous connectez au système, le système d'exploitation montera ensuite votre home chiffré comme une sorte de 'superposition' sur /home/joe, cachant le .ssh/authorized_keys non chiffré.

La troisième idée pourrait impliquer du port knocking : Vous déclenchez un type de trafic réseau vers certains ports secrets avec des données secrètes qui déverrouillent ensuite votre home chiffré. Après la procédure de knocking, vous pourrez vous connecter au système.

Inconvénient général / éléments à prendre en compte : ces idées dépendent de la manière dont vous avez chiffré votre $HOME. Si le chiffrement nécessite votre mot de passe pour déchiffrer les données, vous devez le fournir d'une manière ou d'une autre.

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