11 votes

Ssh connexion en utilisant des clés publiques pour les utilisateurs qui n'existent pas encore.

Sous Linux (par exemple, Ubuntu 18.04), comment puis-je configurer sshd pour autoriser les connexions à l'aide de clés publiques pour les utilisateurs du système d'exploitation qui n'existent pas encore?

Par exemple:

  1. Serveur: /etc/ssh/sshd_config a AuthorizedKeysFile: /etc/ssh/keys/%u

  2. sudo mkdir -p /etc/ssh/keys

  3. sudo tee /etc/ssh/keys/foo <<< "$(cat id_rsa.pub)"

  4. sudo systemctl restart sshd

  5. Client: ssh foo@serveur

Dans ce scénario, le serveur N'A PAS de compte foo dans /etc/passwd, mais j'aimerais en créer un automatiquement puis utiliser pam_mkhomedir pour créer son répertoire personnel -- tout cela car l'utilisateur peut réussir à s'authentifier en utilisant une clé publique.

Ma tentative:

  1. /etc/pam.d/sshd commenter @include common-auth (sans effet car les clés publiques contournent apparemment ceci de toute façon)

  2. /etc/pam.d/sshd commenter @include common-account (pas de différence)

  3. /etc/pam.d/sshd ajouter, sous #2, account required pam_permit.so (pas de différence)

  4. /etc/ssh/sshd_config LogLevel: DEBUG3 montre

    debug1: userauth-request for user foo Invalid user foo from 192.168.0.8 port 62083 debug1: PAM: initializing for "foo" debug1: userauth_pubkey: test whether pkalg/pkblob are acceptable for RSA SHA256:kdI+ALYK88R6zAcoPAIyXctjCLgEkGodgieusIOay0c [preauth] debug2: userauth_pubkey: disabled because of invalid user [preauth]

14voto

user74328 Points 71

La réponse simple est que vous ne pouvez pas faire cela sans écrire votre propre plugin pour PAM.

En fonction de vos besoins commerciaux, il peut en fait être plus logique de connecter la boîte à un référentiel LDAP pour la base de données utilisateur.

Pour être un peu plus spécifique, sshd va regarder vers PAM pour authentifier l'utilisateur. Si la base de données utilisateur n'a pas d'enregistrement, l'utilisateur sera défini sur unknown, ce qui va créer un cauchemar pour l'utilisateur. De plus, il n'y a aucun module PAM avec lequel je suis familier qui prendra le nom d'utilisateur fourni par sshd et en fera un enregistrement dans passwd.

4voto

fuzzy dice Points 31

FreeIPA associé à SSSD pourrait être la bonne réponse à votre question : conserver la base de données utilisateur en un seul endroit (FreeIPA) et permettre à la station de travail de la consulter (SSSD) pour obtenir des informations sur les utilisateurs et créer dynamiquement les répertoires personnels pour eux (pam_mkhomedir). FreeIPA vous permet même de conserver les clés publiques ssh dans la base de données, vous n'avez pas à les inscrire sur chaque poste de travail.

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