Te explico cómo añadir una clave RSA en Jenkins para autenticarte con GitLab:

1. Generar el par de claves RSA
En el servidor de Jenkins (o tu máquina local), ejecuta:
bash
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Guarda las claves, por ejemplo en ~/.ssh/id_rsa_jenkins.
2. Añadir la clave pública en GitLab
- Copia el contenido de la clave pública (
id_rsa_jenkins.pub) - Ve a GitLab → User Settings → SSH Keys
- Elige autenticación y firma.
- Elige si quieres que tenga caducidad.
- Pega la clave pública y guarda
3. Añadir la clave privada en Jenkins
- Ve a Jenkins → Manage Jenkins → Credentials https://URL_JENKINGS/manage/credentials/store/system/domain/_/
- Selecciona el dominio adecuado (ej.
Global) - Haz clic en Add Credentials
- Rellena el formulario:
- Kind:
SSH Username with private key - ID: un nombre identificativo (ej.
gitlab-ssh-key) - Username: tu usuario de GitLab
- Private Key: selecciona Enter directly y pega el contenido de
id_rsa_jenkins(la clave privada)
- Kind:
- Haz clic en Create
4. Usar la credencial en un Job o Pipeline
En un Pipeline (Jenkinsfile):
groovy
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git credentialsId: 'gitlab-ssh-key',
url: '[email protected]:usuario/repositorio.git'
}
}
}
}
En un Job freestyle:
- Ve a la configuración del job
- En Source Code Management → Git
- Introduce la URL SSH del repo (
[email protected]:...) - En Credentials, selecciona la clave que creaste
5. Verificar la conexión (opcional)
En el servidor Jenkins puedes probar la conexión manualmente:
bash
ssh -i ~/.ssh/id_rsa_jenkins -T [email protected]
Deberías ver un mensaje de bienvenida de GitLab si todo está correcto.
Si aparece error:
returned status code 128: stdout: stderr: No ED25519 host key is known for gitlab.com and you have requested strict checking. Host key verification failed. fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
Opción 1: Desde el servidor Jenkins (recomendada)
Conéctate al servidor/contenedor de Jenkins y ejecuta como el usuario jenkins:
bash
# Cambiar al usuario jenkins sudo su -s /bin/bash jenkins # Añadir gitlab.com a known_hosts ssh-keyscan -t rsa,ecdsa,ed25519 gitlab.com >> ~/.ssh/known_hosts # Verificar que se añadió cat ~/.ssh/known_hosts | grep gitlab.com
Opción 2: Desde la configuración de Jenkins (sin acceso al servidor)
- Ve a Manage Jenkins → Security → Git Host Key Verification Configuration
- En Host Key Verification Strategy, selecciona:
Manually provided keys→ pega la salida de:
ssh-keyscan gitlab.com
- O (menos seguro)
No verification→ solo para pruebas
Opción 3: Si usas Jenkins en Docker
bash
docker exec -u jenkins <container_id> ssh-keyscan -t rsa,ecdsa,ed25519 gitlab.com >> /var/jenkins_home/.ssh/known_hosts
Verificar que funciona
Prueba la conexión desde el usuario jenkins:
bash
sudo su -s /bin/bash jenkins ssh -T [email protected]
Deberías ver:
Welcome to GitLab, @your_user!
¿Por qué ocurre esto? SSH tiene verificación estricta de hosts por defecto. Si gitlab.com no está en known_hosts, rechaza la conexión aunque tu clave RSA sea correcta. El ssh-keyscan simplemente pre-aprueba el fingerprint de GitLab.

Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.