J'ai monté un serveur LDAP, je génère des certificats pour mes utilisateurs et je voulais stocker des certificats dans LDAP (les certificats eux-mêmes, pas leurs répertoires). J'ai trouvé le schéma suivant utilisé pour stocker la clé publique. J'ai donc ajouté le schéma et les paramètres publics correspondants. clés des utilisateurs au serveur LDAP.
# octetString SYNTAX
attributetype ( 1.3.6.1.4.1.24552.500.1.1.1.13 NAME 'sshPublicKey'
DESC 'MANDATORY: OpenSSH Public key'
EQUALITY octetStringMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
# printableString SYNTAX yes|no
objectclass ( 1.3.6.1.4.1.24552.500.1.1.2.0 NAME 'ldapPublicKey' SUP top AUXILIARY
DESC 'MANDATORY: OpenSSH LPK objectclass'
MAY ( sshPublicKey $ uid )
)
Je recherche l’utilisation de ssh pour se connecter au serveur à l’aide de clés publique et privée, et j’ai trouvé que pour ssh, la clé publique du serveur LDAP nécessitait une commande AuthorizedKeysCommand et un script qui prendrait en charge la recherche de la clé publique et la donnerait à LDAP. , trouvé ce script pour rechercher la clé publique LDAP
#!/bin/bash
cn=$usuario
server=servus2.inf #Put your server IP
basedn=ou=usuarios,dc=servus2,dc=inf #Put your basedn
port=389
ldapsearch -x -h $server -p $port -b $basedn -s sub"(objectclass=posixAccount)(uid=$cn)" | sed -n '/^ /{H;d};/sshPublicKey:/x;$g;s/\n *//g;s/sshPublicKey: //gp'
Je l'ai mis dans le dossier /etc/ssh
et ai donné l'autorisation d'exécuter à tous les utilisateurs. J'ai également donné au gestionnaire d'autorisations l'écriture et la lecture. Une fois terminé, j'ai ajouté le fichier /etc/ssh/sshd_config
en ligne:
AuthorizedKeysCommand /etc/ssh/script.sh
et j'ai réalisé que la ligne était PubkeyAuthentication yes
alors une fois configuré, je redémarre le serveur ssh. Depuis un client tente de se connecter au serveur via ssh comme suit:
ssh -i claveprivada [email protected]
mais rien ne me fait suivre, je demande un mot de passe, ajouta l'option -vvv
pour voir les détails qui se passaient, mais ne me dit rien de spécifique. Je pense que ce n'est pas la ligne de lecture AuthorizedKeysCommand
qui ne sort à aucun moment. J'ai consulté le journal et je ne reçois aucune erreur en ce qui concerne cette ligne ou ce script, alors je pense que c'est ignorer la ligne.
Je cherchai des informations à ce sujet et vis que les versions précédentes avaient un bogue. Je ne sais pas si cela a déjà été résolu, mais je suis passé à la version Ubuntu 16, OpenSSH 7.1p2, mais cela ne m'a pas aidé comme d'habitude.
Est-ce que quelqu'un sait comment résoudre ce problème?
J'ai essayé d'obtenir la clé publique d'un certain utilisateur qui tente de se connecter à l'aide de ssh. (dont la clé publique est stockée sur le serveur LDAP). Les configurations ci-dessous ont fonctionné pour moi.
Dans /etc/ssh/sshd_config
AuthorizedKeysCommand /usr/bin/auth
AuthorizedKeysCommandUser nobody
et le script qui prend l'identifiant de l'utilisateur (nom) comme entrée est ci-dessous.
cn=$1
server=192.168.57.105 #Put your server IP
basedn=ou=users,dc=myorg,dc=org #Put your basedn
port=389
ldapsearch -x -h $server -p $port -o ldif-wrap=no -b $basedn -s sub "(&(objectClass=posixAccount)(uid=$cn))" | sed -n 's/^[ \t]*sshPublicKey:[ \t]*\(.*\)/\1/p'