En bref:
Voudrait un moyen de faire l'authentification de clé SSH via LDAP.
Problème:
Nous utilisons LDAP (slapd) pour les services d'annuaire et nous sommes récemment passés à utiliser notre propre AMI pour la création d'instances. La raison pour laquelle le bit AMI est important est que, dans l' idéal , nous aimerions pouvoir nous connecter avec SSH via l'authentification de clé dès que l'instance est en cours d'exécution et ne pas avoir à attendre que notre outil de gestion de la configuration, un peu lent, lance un script à ajouter. les clés correctes à l'instance.
Le scénario idéal est que, lors de l'ajout d'un utilisateur à LDAP, nous ajoutions également sa clé et qu'il puisse immédiatement se connecter.
L'authentification par clé est indispensable car la connexion par mot de passe est à la fois moins sécurisée et gênante.
J'ai lu cette question qui suggère qu'il existe un correctif pour OpenSSH appelé OpenSSH-lpk pour le faire, mais que ce n'est plus nécessaire avec le serveur OpenSSH> = 6.2
Ajout d'une option sshd_config (5) AuthorizedKeysCommand pour prendre en charge la récupération de allowed_keys à partir d'une commande en plus (ou au lieu de) du système de fichiers. La commande est exécutée sous un compte spécifié par une option AuthorizedKeysCommandUser sshd_config (5).
Comment configurer OpenSSH et LDAP pour implémenter cela?
AuthorizedKeysCommandUser nobody
au lieu de root.ldapsearch -u -LLL -o ldif-wrap=no '(&(objectClass=posixAccount)(uid='"$1"'))' 'sshPublicKey' | sed -n 's/^[ \t]*sshPublicKey:[ \t]*\(.*\)/\1/p'
AuthorizedKeysCommandRunAs
et pasAuthorizedKeysCommandUser
Pour toute personne rencontrant l'erreur lors de l'exécution de ldapsearch:
comme j'étais (sur FreeBSD), la solution consiste à changer la première commande sed en:
(ajout d'un point-virgule après le «d»).
la source
Je voulais juste partager ma "méthode", mon côté client est spécifique à Debian / Ubuntu, mais mon côté serveur est fondamentalement le même que ci-dessus, mais avec un peu plus de "HowTo:"
Serveur:
Activer l'attribut de clé publique:
Crédit :
https://blog.shichao.io/2015/04/17/setup_openldap_server_with_openssh_lpk_on_ubuntu.html
Maintenant, utilisez ceci pour ajouter ldif:
Ajouter un utilisateur avec une clé publique SSH dans phpLDAPadmin
Tout d’abord, créez un utilisateur avec le modèle «Generic: User Account». Ensuite, allez à la section attribut «objectClass», cliquez sur «ajouter une valeur», puis choisissez l’attribut «ldapPublicKey». Une fois que vous avez envoyé, retournez à la page de modification de l'utilisateur, cliquez sur «Ajouter un nouvel attribut» dans la partie supérieure, choisissez «sshPublicKey», collez la clé publique dans la zone de texte, puis cliquez sur «Mettre à jour un objet». "
sshPublicKey Attribut non affiché - OpenLDAP PHPLDAP SSH Key Auth
Client Ubuntu:
Créer des clés de test:
la source
Ce n'est pas une réponse complète, juste un ajout à la réponse de c4urself . J'aurais ajouté ceci comme commentaire, mais je n'ai pas assez de réputation pour commenter, alors s'il vous plaît, ne votez pas!
C'est le script que j'utilise pour le
AuthorizedKeysCommand
(basé sur la version de c4urself). Cela fonctionne que la valeur soit renvoyée en encodage base64 ou non. Cela peut être particulièrement utile si vous souhaitez stocker plusieurs clés autorisées dans LDAP. Il suffit simplement de séparer les clés avec des caractères de nouvelle ligne, similaires au fichier allowed_keys.la source