Cómo conectar Jenkins Master con Slave vía SSH
Clase 14 de 15 • Curso Básico de Jenkins
Contenido del curso
Jenkins Core
Jobs
Plugins
Pipelines
Slave
Cierre
Configurar un entorno distribuido en Jenkins no tiene por qué ser complejo. Aquí verás, de forma clara y directa, cómo conectar un Jenkins Master con un Jenkins Slave usando claves de SSH, gestionando permisos del usuario jenkins y definiendo el workspace remoto. Además, se explica el uso de labels, executioners y credenciales para una conexión estable y segura.
¿Cómo preparar el servidor slave con usuario, Java y SSH?
Para que los jobs no corran como root, se crea el usuario jenkins y se le dan permisos sobre el directorio de trabajo. Luego se instala Java y se habilita la autenticación por SSH con la llave pública del master.
- Crear el usuario jenkins para ejecutar jobs sin privilegios de root.
- Actualizar paquetes con
apt-get updatee instalar Java 8 con OpenJDK. - Crear el directorio de trabajo
/var/jenkinspara workspaces. - Cambiar el dueño del directorio a jenkins:jenkins con
chown. - Cambiar al usuario jenkins con
sudo su jenkins. - Crear
~/.ssh/y el archivoauthorized_keys. - Pegar la llave pública del Jenkins Master en
authorized_keyspara autenticar por SSH.
Detalles clave:
- Buena práctica: los jobs corren como jenkins, no como root, para respetar permisos de binarios y seguridad.
- Archivo crítico: authorized_keys permite al master autenticarse con su clave pública/privada y ejecutar comandos como jenkins.
¿Cómo crear y configurar el nodo en Jenkins por SSH?
Desde la consola, se define el nodo, su directorio raíz, el número de executioners, el uso de labels y la estrategia de conexión por SSH. Se agregan credenciales con la clave privada del master.
- Ir a la consola: Manage Jenkins → Manage Nodes → New Node.
- Nombrar el nodo “Slave 1” y añadir una descripción.
- Definir la cantidad de executioners: suele igualar CPUs, pero depende del workload.
- Configurar el root directory en
/var/jenkins. - Decidir etiquetas: labels dirigen qué jobs corren en qué nodos; si no hay restricción, no usar label.
- Seleccionar conexión con Launch agents via SSH.
- Usar IP para pruebas; en producción, preferir un registro de DNS.
Credenciales SSH: - Añadir credencial tipo “SSH username with private key”. - Asignar a Jenkins y sus nodos; username: jenkins. - Pegar la clave privada del master (la “larga”, no la pública); sin passphrase. - Usar un ID como “Jenkins” e indicar host key verification como non-verified si se desea continuar rápido.
¿Cómo validar la conexión y ejecutar jobs en el slave?
Al guardar, Jenkins intentará conectarse. Si no aparece conectado, usa Launch Agent para ver el log de depuración con mensajes como Authentication Successful hasta leer Agent Successfully Connected y estado online. En el panel, el nodo se verá idle cuando no esté ejecutando.
- Forzar ejecución en el slave: poner al master con cero executioners.
- Lanzar el trabajo con Build with parameters (ejemplo: hello platzy).
- Verificar el mensaje: Building remotely on slave one y el workspace remoto en
/var/jenkins. - Confirmar que el slave replica los mismos comandos que el master, pero desde su directorio remoto.
Ideas clave y buenas prácticas: - Labels: controlan dónde corre cada job cuando necesitas aislar workloads. - Depuración de agentes: usa Relaunch Slave o Launch Agent para ver errores de autenticación o conexión. - Escalabilidad: con monitoreo, automatización y cuidado del disco, los slaves ofrecen una infraestructura muy escalable.
¿Tienes dudas sobre labels, credenciales o executioners para tu carga de trabajo? Comenta tu caso y optimizamos juntos tu configuración.