Docs/ Seguridad/ Claves SSH

Claves SSH

Administra claves SSH para autenticación segura con proveedores Git y acceso a servidores remotos.

Descripción general

Las claves SSH en sh0 sirven para dos propósitos principales:

  • Autenticación con proveedores Git: Clonar repositorios privados desde GitHub, GitLab, Bitbucket o cualquier servidor Git que admita SSH.
  • Acceso a servidores remotos: Conectarse a nodos remotos en una configuración multi-servidor vía túneles SSH.

sh0 almacena las claves privadas SSH cifradas en reposo usando AES-256-GCM. Las claves solo se descifran en memoria cuando se necesitan para autenticación.

Generar un par de claves SSH

Si no tienes un par de claves SSH, genera uno con el siguiente comando. sh0 admite claves Ed25519 (recomendado) y RSA.

Ed25519 (recomendado):

Terminal
ssh-keygen -t ed25519 -C "sh0-deploy-key" -f ~/.ssh/sh0_deploy

RSA (4096 bits):

Terminal
ssh-keygen -t rsa -b 4096 -C "sh0-deploy-key" -f ~/.ssh/sh0_deploy

Esto crea dos archivos:

  • ~/.ssh/sh0_deploy -- la clave privada (mantén esto en secreto)
  • ~/.ssh/sh0_deploy.pub -- la clave pública (se puede compartir)
Warning
Nunca compartas tu clave privada. Solo la clave pública (archivo .pub) debe agregarse a los proveedores Git. La clave privada se sube a sh0 para que pueda autenticarse en tu nombre.

Agregar claves SSH a sh0

Puedes agregar claves SSH a través del panel de control o la API.

Vía el panel de control:

  1. Navega a Configuración → Claves SSH.
  2. Haz clic en Agregar clave SSH.
  3. Ingresa un nombre descriptivo (por ejemplo, "Clave de despliegue GitHub").
  4. Pega el contenido de tu archivo de clave privada.
  5. Haz clic en Guardar.
Formulario de agregar clave SSH con campos de nombre y clave privada

Vía la API:

Terminal
curl -X POST https://your-server:9000/api/ssh-keys \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "GitHub Deploy Key",
    "private_key": "-----BEGIN OPENSSH PRIVATE KEY-----\\n...\\n-----END OPENSSH PRIVATE KEY-----"
  }'

Claves SSH para proveedores Git

Para desplegar desde repositorios privados, sh0 necesita una clave SSH que tenga acceso de lectura al repositorio. Así es como configurarla para los proveedores comunes:

GitHub:

  1. Ve a tu repositorio → Configuración → Claves de despliegue.
  2. Haz clic en Agregar clave de despliegue.
  3. Pega el contenido de tu clave pública (archivo .pub).
  4. Deja "Permitir acceso de escritura" desmarcado (sh0 solo necesita acceso de lectura).
Página de configuración de clave de despliegue en GitHub

GitLab:

  1. Ve a tu proyecto → Configuración → Repositorio → Claves de despliegue.
  2. Agrega una nueva clave de despliegue con tu clave pública.
  3. Concede acceso de solo lectura.

Bitbucket:

  1. Ve a tu repositorio → Configuración → Claves de acceso.
  2. Haz clic en Agregar clave y pega tu clave pública.
Tip
Puedes usar el mismo par de claves SSH para múltiples repositorios, o generar una clave separada para cada repositorio para un control de acceso más granular. sh0 admite múltiples claves y las probará en orden al conectarse a un proveedor Git.

Claves SSH para acceso al servidor

Al agregar nodos remotos a una configuración multi-servidor, sh0 usa claves SSH para establecer túneles seguros. La clave debe estar autorizada en el servidor remoto.

  1. Agrega la clave SSH a sh0 (como se describió anteriormente).
  2. Copia la clave pública al archivo ~/.ssh/authorized_keys del servidor remoto:
Terminal
ssh-copy-id -i ~/.ssh/sh0_deploy.pub deploy@remote-server

Al agregar el nodo en sh0, selecciona esta clave SSH para autenticación. sh0 la usará para establecer el túnel SSH al demonio Docker remoto.

Configuración de nodo con menú desplegable de selección de clave SSH

Huellas digitales de claves

Cada clave SSH tiene una huella digital única que puedes usar para verificar su identidad. sh0 muestra la huella digital SHA-256 de cada clave almacenada.

Terminal
# View the fingerprint of a local key file
ssh-keygen -lf ~/.ssh/sh0_deploy.pub

Compara esta huella digital con la que se muestra en el panel de control de sh0 para verificar que subiste la clave correcta.

Administrar múltiples claves

El panel de Claves SSH lista todas las claves almacenadas en sh0. Para cada clave, puedes ver:

  • Nombre y huella digital de la clave
  • Tipo de clave (Ed25519, RSA)
  • Fecha de adición
  • Qué aplicaciones o nodos usan la clave
Panel de gestión de claves SSH mostrando todas las claves almacenadas con sus detalles
Tip
Usa nombres descriptivos para tus claves (por ejemplo, "GitHub - production-api", "Nodo - EU Frankfurt") para que puedas identificar fácilmente qué clave se usa para qué propósito.

Eliminar claves

Para eliminar una clave SSH de sh0:

  1. Navega a Configuración → Claves SSH.
  2. Haz clic en el ícono de eliminar junto a la clave que deseas remover.
  3. Confirma la eliminación.
Terminal
curl -X DELETE https://your-server:9000/api/ssh-keys/key_abc123 \
  -H "Authorization: Bearer YOUR_TOKEN"
Danger
Eliminar una clave SSH que está en uso por una aplicación o nodo interrumpirá los despliegues y las conexiones al servidor. sh0 te advertirá si la clave está actualmente en uso antes de permitir la eliminación.