En breve:
Me gustaría una forma de hacer la autenticación de clave SSH a través de LDAP.
Problema:
Utilizamos LDAP (slapd) para servicios de directorio y recientemente hemos pasado a usar nuestro propio AMI para crear instancias. La razón por la que el bit AMI es importante es que, idealmente , nos gustaría poder iniciar sesión con SSH a través de la autenticación de clave tan pronto como se ejecute la instancia y no tener que esperar a que nuestra herramienta de administración de configuración algo lenta inicie un script para agregar Las claves correctas para la instancia.
El escenario ideal es que, al agregar un usuario a LDAP, también agregamos su clave y podrán iniciar sesión de inmediato.
La autenticación de clave es imprescindible porque el inicio de sesión basado en contraseña es menos seguro y molesto.
He leído esta pregunta que sugiere que hay un parche para OpenSSH llamado OpenSSH-lpk para hacer esto, pero esto ya no es necesario con el servidor OpenSSH> = 6.2
Se agregó una opción de sshd_config (5) AuthorizedKeysCommand para admitir la obtención de claves autorizadas de un comando además de (o en lugar de) del sistema de archivos. El comando se ejecuta bajo una cuenta especificada por una opción AuthorizedKeysCommandUser sshd_config (5)
¿Cómo puedo configurar OpenSSH y LDAP para implementar esto?
AuthorizedKeysCommandUser nobody
lugar de root.ldapsearch -u -LLL -o ldif-wrap=no '(&(objectClass=posixAccount)(uid='"$1"'))' 'sshPublicKey' | sed -n 's/^[ \t]*sshPublicKey:[ \t]*\(.*\)/\1/p'
AuthorizedKeysCommandRunAs
y noAuthorizedKeysCommandUser
Para cualquiera que obtenga el error al ejecutar ldapsearch:
como estaba (en FreeBSD), la solución es cambiar el primer comando sed a:
(agregando un punto y coma después de la 'd').
fuente
Solo quería compartir mi "método", mi lado del cliente es específico de Debian / Ubuntu, pero mi lado del servidor es básicamente el mismo que el anterior, pero con un poco más de "Cómo:"
Servidor:
Habilitar atributo de clave pública:
Crédito :
https://blog.shichao.io/2015/04/17/setup_openldap_server_with_openssh_lpk_on_ubuntu.html
Ahora use esto para agregar ldif:
Agregar un usuario con clave pública SSH en phpLDAPadmin
Primero, cree un usuario con la plantilla "Genérico: Cuenta de usuario". Luego, vaya a la sección de atributos "objectClass", haga clic en "agregar valor" y elija el atributo "ldapPublicKey". Después de enviar, regrese a la página de edición del usuario, haga clic en "Agregar nuevo atributo" en la parte superior y elija "sshPublicKey", pegue la clave pública en el área de texto y finalmente haga clic en "Actualizar objeto".
El atributo sshPublicKey no se muestra - OpenLDAP PHPLDAP SSH Key Auth
Cliente Ubuntu:
Crear claves de prueba:
fuente
Esta no es una respuesta completa, solo una adición a la respuesta de c4urself . Hubiera agregado esto como un comentario, pero no tengo suficiente reputación para comentar, ¡así que por favor no desestime!
Este es el script que estoy usando para
AuthorizedKeysCommand
(basado en la versión de c4urself). Funciona independientemente de si el valor se devuelve en codificación base64 o no. Esto puede ser especialmente útil si desea almacenar varias claves autorizadas en LDAP: simplemente separe las claves con caracteres de nueva línea, de forma similar al archivo autorizado_claves.fuente