Manual de Configuración de SSH Keys con GitLab
Este manual te guiará en la configuración de llaves SSH para conectarte a GitLab desde macOS y Ubuntu.
Tabla de Contenidos
Section titled “Tabla de Contenidos”- Configuración en macOS
- Configuración en Ubuntu Server
- Agregar SSH Key a GitLab
- Verificar la Conexión
- Solución de Problemas
Configuración en macOS
Section titled “Configuración en macOS”1. Generar la Llave SSH
Section titled “1. Generar la Llave SSH”Abre la Terminal y ejecuta el siguiente comando, reemplazando el correo con el tuyo:
ssh-keygen -t ed25519 -C "correo@dominio.com"Durante el proceso:
- Te preguntará dónde guardar la llave (presiona Enter para usar la ubicación por defecto:
~/.ssh/id_ed25519) - Te pedirá una contraseña (passphrase). Puedes dejarla vacía o agregar una para mayor seguridad
- Confirma la contraseña si decidiste usar una
2. Copiar la Llave Pública
Section titled “2. Copiar la Llave Pública”Para copiar la llave pública al portapapeles, ejecuta:
tr -d '\n' < ~/.ssh/id_ed25519.pub | pbcopyEste comando elimina los saltos de línea y copia la llave directamente al portapapeles de macOS.
3. Configurar el Archivo SSH Config
Section titled “3. Configurar el Archivo SSH Config”Crea o edita el archivo de configuración SSH:
nano ~/.ssh/configAgrega la siguiente configuración:
Host gitlab.sani.capital HostName gitlab.sani.capital Port 2222 User git IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yesExplicación de los parámetros:
Host: Alias para conectarte fácilmenteHostName: Dominio o IP del servidor GitLabPort: Puerto SSH personalizado (el estándar es 22)User: Usuario de GitIdentityFile: Ruta a tu llave privadaIdentitiesOnly: Usa solo la llave especificada
Guarda el archivo (Ctrl+O, Enter, Ctrl+X en nano).
4. Establecer Permisos Correctos
Section titled “4. Establecer Permisos Correctos”chmod 600 ~/.ssh/configchmod 700 ~/.sshchmod 600 ~/.ssh/id_ed25519chmod 644 ~/.ssh/id_ed25519.pubConfiguración en Ubuntu Server
Section titled “Configuración en Ubuntu Server”1. Generar la Llave SSH
Section titled “1. Generar la Llave SSH”Conéctate al servidor Ubuntu vía SSH y ejecuta:
ssh-keygen -t ed25519 -C "correo@dominio.com"Sigue el mismo proceso que en macOS para guardar la llave y establecer una contraseña.
2. Copiar la Llave Pública
Section titled “2. Copiar la Llave Pública”En Ubuntu, puedes visualizar la llave pública con:
cat ~/.ssh/id_ed25519.pubCopia manualmente todo el contenido que aparece en pantalla (comienza con ssh-ed25519 y termina con tu correo).
3. Configurar el Archivo SSH Config
Section titled “3. Configurar el Archivo SSH Config”nano ~/.ssh/configAgrega la misma configuración que en macOS:
Host gitlab.sani.capital HostName gitlab.sani.capital Port 2222 User git IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yes4. Establecer Permisos Correctos
Section titled “4. Establecer Permisos Correctos”chmod 600 ~/.ssh/configchmod 700 ~/.sshchmod 600 ~/.ssh/id_ed25519chmod 644 ~/.ssh/id_ed25519.pubAgregar SSH Key a GitLab
Section titled “Agregar SSH Key a GitLab”Para el Servidor de OVH (gitlab.sani.capital)
Section titled “Para el Servidor de OVH (gitlab.sani.capital)”- Inicia sesión en tu instancia de GitLab:
https://gitlab.sani.capital - Haz clic en tu avatar (esquina superior derecha) → Preferences
- En el menú lateral, selecciona SSH Keys
- Pega la llave pública que copiaste anteriormente en el campo “Key”
- Dale un título descriptivo (ej: “MacBook Pro Personal” o “Servidor Ubuntu OVH”)
- Opcionalmente, establece una fecha de expiración
- Haz clic en Add key
Configurar Múltiples Cuentas del Team (Opcional)
Section titled “Configurar Múltiples Cuentas del Team (Opcional)”Si necesitas configurar SSH keys para varios miembros del equipo:
En el archivo ~/.ssh/config, agrega entradas separadas:
# Usuario 1Host gitlab-usuario1 HostName gitlab.sani.capital Port 2222 User git IdentityFile ~/.ssh/id_ed25519_usuario1 IdentitiesOnly yes
# Usuario 2Host gitlab-usuario2 HostName gitlab.sani.capital Port 2222 User git IdentityFile ~/.ssh/id_ed25519_usuario2 IdentitiesOnly yesAl clonar repositorios, usa el alias correspondiente:
git clone git@gitlab-usuario1:grupo/proyecto.gitVerificar la Conexión
Section titled “Verificar la Conexión”Prueba Básica de Conexión
Section titled “Prueba Básica de Conexión”ssh -T git@gitlab.sani.capitalSi todo está configurado correctamente, deberías ver un mensaje como:
Welcome to GitLab, @tu-usuario!Prueba con Verbose (para debugging)
Section titled “Prueba con Verbose (para debugging)”Si tienes problemas, ejecuta con el flag -v:
ssh -vT git@gitlab.sani.capitalProbar Clonado de Repositorio
Section titled “Probar Clonado de Repositorio”git clone git@gitlab.sani.capital:grupo/nombre-del-proyecto.gitSolución de Problemas
Section titled “Solución de Problemas”Error: “Permission denied (publickey)”
Section titled “Error: “Permission denied (publickey)””Causas comunes:
- La llave pública no está agregada en GitLab
- Los permisos de los archivos SSH son incorrectos
- El archivo config tiene errores de sintaxis
Soluciones:
# Verificar que la llave está cargadassh-add -l
# Agregar la llave manualmente si es necesariossh-add ~/.ssh/id_ed25519
# Verificar permisosls -la ~/.ssh/Error: “Connection refused” o “Connection timed out”
Section titled “Error: “Connection refused” o “Connection timed out””Causas comunes:
- El puerto está bloqueado por firewall
- El servidor GitLab está caído
- Puerto incorrecto en la configuración
Soluciones:
# Verificar conectividad al puertonc -zv gitlab.sani.capital 2222
# Verificar configuracióncat ~/.ssh/configLa Llave No Se Carga Automáticamente
Section titled “La Llave No Se Carga Automáticamente”Agrega la llave al agente SSH:
macOS:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519Ubuntu:
eval "$(ssh-agent -s)"ssh-add ~/.ssh/id_ed25519Múltiples Llaves SSH
Section titled “Múltiples Llaves SSH”Si tienes varias llaves y Git usa la incorrecta:
# Especifica la llave en el comando gitGIT_SSH_COMMAND="ssh -i ~/.ssh/id_ed25519" git clone git@gitlab.sani.capital:grupo/proyecto.gitO configura por repositorio:
cd tu-repositoriogit config core.sshCommand "ssh -i ~/.ssh/id_ed25519 -F /dev/null"Configuración Git Global (Recomendado)
Section titled “Configuración Git Global (Recomendado)”Después de configurar SSH, establece tu identidad Git:
git config --global user.name "Tu Nombre"git config --global user.email "correo@dominio.com"Para verificar la configuración:
git config --listNotas de Seguridad
Section titled “Notas de Seguridad”- Nunca compartas tu llave privada (
id_ed25519). Solo comparte la pública (.pub) - Usa passphrase para tus llaves en entornos de producción
- Rota las llaves periódicamente (cada 6-12 meses)
- Elimina llaves antiguas de GitLab cuando ya no las uses
- Respalda tus llaves en un lugar seguro (como un gestor de contraseñas)
Comandos de Referencia Rápida
Section titled “Comandos de Referencia Rápida”# Generar llavessh-keygen -t ed25519 -C "correo@dominio.com"
# Ver llave pública (macOS)cat ~/.ssh/id_ed25519.pub | pbcopy
# Ver llave pública (Ubuntu)cat ~/.ssh/id_ed25519.pub
# Probar conexiónssh -T git@gitlab.sani.capital
# Ver llaves cargadasssh-add -l
# Agregar llave al agentessh-add ~/.ssh/id_ed25519
# Editar confignano ~/.ssh/configRecursos Adicionales
Section titled “Recursos Adicionales”- Documentación oficial de GitLab sobre SSH
- Guía de SSH de GitHub (aplica para GitLab también)
- Soporte: Contacta al administrador del servidor GitLab para problemas específicos del servidor