OpenSSH : récupération des clés publiques depuis un serveur OpenLDAP

Boris HUISGEN April 13, 2014

administration système linux openssh ldap openldap

Les dernières versions d’OpenSSH (version 6) permettent de récupérer les clés SSH des utilisateurs depuis une source externe. Je vais présenter dans cet article la récupération des clés publiques depuis un serveur LDAP.

Installation

Sous Debian 7, il est nécessaire d’installer les packages depuis les backports Wheezy pour pouvoir bénéficier des dernières versions d’OpenSSH :

deb http://ftp.debian.org/debian/ wheezy-backports main


# apt-cache show openssh-server
# apt-get install openssh-server=1:6.4p1-1~bpo70+1 openssh-client=1:6.4p1-1~bpo70+1

Configuration

Le script de récupération des clés publiques est le suivant :

# touch /etc/ssh/ldap-authorizedkeys.sh && chmod +x /etc/ssh/ldap-authorizedkeys.sh
# vim /etc/ssh/ldap-authorizedkeys.sh


URI="ldap://ldap1.my.domain,ldap://ldap2.my.domain"
BASE="dc=my,dc=domain"
BINDDN="cn=proxy,dc=my,dc=domain"
BINDPW="$ecret"
OPTIONS="-ZZ"

LOGIN=$1

ldapsearch -H ${URI} -D "${BINDDN}" -w "${BINDPW}" -b "${BASE}" ${OPTIONS} '(&(objectClass=posixAccount)(uid='"$LOGIN"'))' 'sshPublicKey' \
    | sed -n '/^ /{H;d};/sshPublicKey:/x;$g;s/\n *//g;s/sshPublicKey: //gp'

Au niveau de la configuration du serveur SSH :

# vim /etc/ssh/sshd_config


AuthorizedKeysCommand /etc/ssh/ldap-authorizedkeys.sh
AuthorizedKeysCommandUser root

Le serveur SSH doit être redémarré :

# /etc/init.d/ssh restart

Reste à modifier la base LDAP en ajoutant l’attribut sshPublicKey contenant la clé publique à chaque objet LDAP utilisateur :

dn: uid=bhuisgen,ou=titi,ou=tata,ou=toto,dc=my,dc=domain
objectClass: ldapPublicKey
sshPublicKey: ******************

See also

CentOS : lenteur des logins SSH
Read more
OpenLDAP : fixer l’attribut shadowLastChange à une date spécifique
Read more
iRedMail : configurer un second node en backup MX
Read more