Guía SSH completa
Crear claves SSH, copiarlas al servidor, acceso sin contraseña, alias en config y manejo de múltiples cuentas de GitHub.
Todo mi flujo SSH en una sola guía: crear el par de claves, dejarlas en el servidor, conectarse sin contraseña, y manejar varias identidades (proyectos personales y de trabajo) contra GitHub.
Concepto base
Section titled “Concepto base”- La clave pública (
.pub) es la chapa de la puerta: se instala en el servidor o servicio al que quiero entrar. - La clave privada es la llave: nunca sale de mi máquina.
1. Crear el par de claves
Section titled “1. Crear el par de claves”ssh-keygen -t rsa -b 4096 -f $HOME/.ssh/miclave-fdefine el nombre; sin él se crean las claves por defecto (id_rsa).- Presionar Enter cuando pida passphrase para dejarla en blanco (acceso sin contraseña).
- Genera dos archivos:
miclave(privada) ymiclave.pub(pública).
2. Copiar la clave pública al servidor
Section titled “2. Copiar la clave pública al servidor”ssh-copy-id -i ~/.ssh/miclave.pub usuario@servidorCon puerto no estándar:
ssh-copy-id -p 22222 -i ~/.ssh/miclave.pub usuario@servidorSi ssh-copy-id no está disponible, manualmente:
cat ~/.ssh/miclave.pub | ssh usuario@servidor "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"Permisos correctos en el servidor (crítico)
Section titled “Permisos correctos en el servidor (crítico)”Si los permisos no están bien, SSH sigue pidiendo contraseña aunque la clave esté instalada:
ssh usuario@servidor "chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"3. Conectarse
Section titled “3. Conectarse”ssh -p 22222 -i $HOME/.ssh/miclave usuario@servidorAgregar -v para modo verboso si algo falla.
4. Alias en ~/.ssh/config
Section titled “4. Alias en ~/.ssh/config”Para no repetir puerto, usuario y clave en cada conexión:
Host miservidor HostName servidor.ejemplo.com User usuario Port 22222 IdentityFile ~/.ssh/miclaveY luego basta con:
ssh miservidor5. Múltiples identidades con GitHub
Section titled “5. Múltiples identidades con GitHub”GitHub acepta claves en dos niveles:
- De cuenta (Settings → SSH and GPG Keys): válida para todos los repos de la cuenta.
- Deploy key por repositorio (Settings del repo → Deploy keys): válida solo para ese repo. Marcar Allow write access si se necesita hacer push.
Cuando hay varias cuentas o proyectos, cada uno con su clave, se definen hosts alias en ~/.ssh/config:
# Proyecto de trabajoHost github.com-tellevo HostName github.com User git IdentityFile ~/.ssh/id_tellevo_sistema
# Solo para docsHost github-docs-goviedo HostName github.com User git IdentityFile ~/.ssh/id_pc_github
# Proyectos personalesHost github-goviedo HostName github.com User git IdentityFile ~/.ssh/id_github_goviedoEl remote del repo usa el alias en lugar de github.com:
git remote set-url origin git@github-goviedo:goviedo/mi-repo.git6. El agente SSH
Section titled “6. El agente SSH”Habilitar el agente y cargar la clave:
eval "$(ssh-agent -s)"ssh-add ~/.ssh/id_github_goviedoVerificar:
ssh-add -L # lista las claves cargadasssh -T github-goviedo # prueba la autenticación contra GitHub