Configurar Jenkins para ejecutar comandos ssh: ¿dónde almacenar las claves SSH para un usuario con el inicio de sesión deshabilitado?

Configurar Jenkins para ejecutar comandos ssh: ¿dónde almacenar las claves SSH para un usuario con el inicio de sesión deshabilitado?

Estoy intentando generar un par de claves para permitir que un servidor jenkins envíe ssh a otro (a través del complemento ssh-steps si es relevante). La clave pública irá a las claves autorizadas en el host de destino. Tengo entendido que debería ser simple, algo como:

sudo su - [jenkins user]
ssh-keygen -t rsa -b 4096 -C jenkinsuser@jenkinshost 

Luego guarde la clave /home/jenkinsuser/.ssh/id_rsay obtenga la clave pública para agregarla a las claves autorizadas en el host.

Lo que veo es que sudo su - jenkinsuserno funciona y /etc/passwdrevela que el shell para este usuario está configurado en /bin/false, para deshabilitar el inicio de sesión según tengo entendido.

Con eso en mente, estoy buscando una mejor práctica para designar un lugar para la clave ssh, ya que el usuario tiene el inicio de sesión deshabilitado y, por lo tanto, no tiene un directorio de inicio.

Respuesta1

Jenkins tiene incorporadotienda de credencialesque es el lugar más apropiado para colocar las claves SSH utilizadas por los trabajos de Jenkins. El almacén de credenciales está diseñado para almacenar varios tipos de credenciales utilizadas por los trabajos de Jenkins, como claves SSH, nombres de usuario/contraseñas y claves API. El almacén de credenciales permite la delegación de acceso y garantiza que las credenciales confidenciales no se escriban en la salida del trabajo.

Respuesta2

No es necesario ser root para ejecutar el script de generación de claves.

Normalmente guardo todas mis llaves en /etc/ssh. Esto está fuera del directorio de inicio y creo que /etces el directorio más preciso para eso.

información relacionada