Me gustaría agregar un nivel de seguridad para los inicios de sesión en un servidor SSH (Ubuntu), utilizando autenticación de dos factores. Una particularidad de cómo los usuarios se conectan al servidor SSH es que a veces lo hacen de forma no interactiva: el servidor SSH está configurado en el cliente MySQL de los usuarios para ser utilizado como bastión/proxy para llegar a una base de datos. Como consecuencia, estoy buscando configuraciones 2FA que no requieran que el usuario escriba nada en una terminal.
Una solución existente que suena prometedora en teoría es el mensaje telefónico de Google que permite al usuario validar la conexión. Cada usuario de SSH estaría asociado con un número de teléfono y este número de teléfono recibiría un mensaje para validar en cada conexión.
Una desventaja obvia de esta idea es que parece que requeriría el desarrollo de una aplicación para teléfono, lo que la haría demasiado complicada y costosa. ¿Existen otras técnicas que podría utilizar para permitir a los usuarios validar inicios de sesión SSH no interactivos?
Respuesta1
Puede utilizar una SSH-CA para emitir certificados de usuario OpenSSH temporales a corto plazo que solo sean válidos por un par de horas. El usuario debe solicitar el certificado autenticándose con cualquier solución MFA que prefiera. El certificado SSH y la clave privada se cargarán en el agente de claves SSH y se podrán utilizar hasta que caduque el certificado de usuario.
Existen varias implementaciones de SSH-CA con miEKCAsiendo uno de ellos. YMMV.