Cómo configurar una Deploy Key en tu servidor Ubuntu/Debian para hacer pull SSH en tu repositorio GitHub

Índice

  1. ¿Qué es una Deploy Key y por qué usarla?
  2. Generar un par de claves SSH en el servidor
  3. Añadir la clave pública como Deploy Key en GitHub
  4. Configurar SSH para usar la Deploy Key con un alias (github-mainapi)
  5. Probar la conexión SSH al repositorio
  6. Usar la Deploy Key para hacer git pull automáticamente
  7. Consejos y buenas prácticas

1. ¿Qué es una Deploy Key y por qué usarla?

Una Deploy Key es una clave SSH que se asigna a un repositorio GitHub para permitir el acceso seguro desde un servidor, sin necesidad de usuario o contraseña.

Esto es especialmente útil para automatizar despliegues y acciones de integración continua, ya que limita el acceso a ese repositorio y puede configurarse solo con permisos de lectura o escritura.

2. Generar un par de claves SSH en el servidor

En tu servidor Ubuntu/Debian, abre una terminal y ejecuta el siguiente comando para crear un par de claves SSH:

ssh-keygen -t ed25519 -C "deploy-key-mainapi" -f ~/.ssh/id_ed25519_deploy_mainapi

Explicación:

  • -t ed25519: usa el algoritmo moderno Ed25519.
  • -C "deploy-key-mainapi": comentario para identificar la clave.
  • -f: especifica la ruta y nombre de archivo para guardar la clave.

Cuando te pregunte por passphrase, déjalo vacío para permitir uso automático.

3. Añadir la clave pública como Deploy Key en GitHub

Copia el contenido de la clave pública para pegarla en GitHub:

cat ~/.ssh/id_ed25519_deploy_mainapi.pub

Luego, en GitHub:

  1. Ve a tu repositorio.
  2. Entra en Settings (Configuración).
  3. Selecciona Deploy Keys en el menú lateral.
  4. Haz clic en Add deploy key.
  5. Pega la clave pública y asigna un nombre identificativo.
  6. Marca la opción Allow write access solo si necesitas que el servidor pueda subir cambios.
  7. Guarda la deploy key.

4. Configurar SSH para usar la Deploy Key con un alias (github-mainapi)

Para facilitar el uso de esta clave específica, crea o edita el archivo ~/.ssh/config con el siguiente contenido:

Host github-mainapi
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_deploy_mainapi
  IdentitiesOnly yes

Este alias github-mainapi te permitirá referenciar la clave privada en los comandos Git.

5. Probar la conexión SSH al repositorio

Prueba que tu servidor puede autenticar correctamente con GitHub usando el alias:

ssh -T git@github-mainapi

Si la configuración es correcta, verás un mensaje similar a:

Hi <username>! You've successfully authenticated, but GitHub does not provide shell access.

6. Usar la Deploy Key para hacer git pull automáticamente

Para clonar el repositorio usando el alias:

git clone git@github-mainapi:usuario/repositorio.git

Si ya tienes el repositorio, cambia la URL remota para usar el alias:

git remote set-url origin git@github-mainapi:usuario/repositorio.git

Ahora puedes hacer git pull origin main sin que te pida usuario ni contraseña.

7. Consejos y buenas prácticas

  • Protege bien tus claves privadas con permisos restrictivos (chmod 600 ~/.ssh/id_ed25519_deploy_mainapi).
  • Usa una Deploy Key distinta por cada servidor o proyecto para minimizar riesgos.
  • No compartas nunca la clave privada ni la envíes por email.
  • Si necesitas más seguridad, añade passphrase y usa ssh-agent para gestionarla.
  • Si sospechas que la clave se ha comprometido, revoca la Deploy Key en GitHub y genera una nueva.

¡Con esta configuración tendrás un acceso seguro y cómodo para tus despliegues automáticos con GitHub y tu servidor Ubuntu/Debian!