Cómo usar las mismas claves SSH en varios ordenadores

Lo habitual es una clave por dispositivo: ejecuta ssh-keygen -t ed25519 en cada ordenador y añade cada clave pública a ~/.ssh/authorized_keys en tus servidores. Así, perder un portátil solo cuesta borrar una línea. Copiar una única clave privada a todos los dispositivos también funciona, si tiene frase de contraseña, viaja cifrada y queda con modo 600, pero al perder un dispositivo tendrás que cambiar la clave en todas partes.

Actualizada el . La creación de claves, añadir una segunda clave pública a través de un acceso existente, listar huellas, quitar un dispositivo por su comentario, cambiar la frase de contraseña y comprobar un par con ssh-keygen -y se ejecutaron con OpenSSH 10.0 en Debian 13, cliente y servidor en un contenedor desechable.

Dos formas de hacerlo

Cada dispositivo que se conecta con una clave necesita una clave privada. Puedes dar a cada dispositivo su propia clave o copiar la misma clave en todos.

Una clave por dispositivoUna clave copiada
ConfiguraciónAñadir cada clave pública nueva a cada servidorCopiar un archivo a cada dispositivo
Dispositivo perdido o vendidoBorrar una línea en cada servidorClave nueva en cada dispositivo y cada servidor
Registros del servidorMuestran qué dispositivo entróTodos los accesos parecen iguales
Llaves de hardware y móvilesFuncionan, la clave nunca tiene que moverseImposible cuando la clave no se puede exportar

Una clave por dispositivo es la opción más segura por defecto y la que usan la mayoría de los equipos. Copiar tiene sentido para pocos dispositivos que controlas por completo, cuando añadir claves en muchos servidores es lo que más trabajo da.

Crear una clave en el dispositivo nuevo

En el ordenador nuevo, crea una clave con un comentario que nombre el dispositivo:

ssh-keygen -t ed25519 -C "me@desktop"

Acepta el archivo por defecto, ~/.ssh/id_ed25519, y pon una frase de contraseña. El comentario aparece junto a la clave en authorized_keys y en las listas de huellas, y es lo que te permite borrar la línea correcta más adelante. La guía para generar una clave SSH Ed25519 explica las opciones.

Añadirla a tus servidores

Si el servidor todavía acepta contraseña, ejecuta esto desde el dispositivo nuevo:

ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@server

Si el acceso con contraseña está desactivado, que es lo recomendable, usa un dispositivo que ya pueda entrar. Llévale el archivo .pub nuevo (es público, así que vale un correo o un mensaje) y añádelo:

ssh deploy@server "cat >> ~/.ssh/authorized_keys" < desktop.pub

Comprueba que están las dos claves, cada una con su comentario:

ssh deploy@server "ssh-keygen -lf ~/.ssh/authorized_keys"
256 SHA256:l1AS4F9VRH90JA6uJuQw7/3uRDzrtMafpkeiO7zel84 me@laptop (ED25519)
256 SHA256:LGklWc72FhPwm7in/sLr3pGRujcSZ6a6z4E97qJGkRE me@desktop (ED25519)

Repite en cada servidor y añade la clave a las claves SSH de tu cuenta de GitHub o GitLab si subes código desde este dispositivo. Con muchos servidores, un bucle corto sobre tu lista de hosts ahorra tiempo. El formato del archivo está en el archivo authorized_keys explicado.

Si prefieres copiar la clave

Copia los dos archivos, id_ed25519 e id_ed25519.pub, por un canal cifrado de extremo a extremo: un USB cifrado, AirDrop o scp entre dos máquinas tuyas. Evita el correo, los chats y las carpetas compartidas, que guardan copias. Después, en el dispositivo nuevo:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub

Sin estos permisos, ssh rechaza la clave. Si no tiene frase de contraseña, añádele una ahora, ya que vive en más sitios:

ssh-keygen -p -f ~/.ssh/id_ed25519

Para comprobar que la clave privada y la pública van juntas, saca la parte pública de la privada y compara:

ssh-keygen -y -f ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub

Las dos líneas deben empezar por la misma clave. Más detalles en obtener la clave pública desde la privada.

Cuando pierdes o cambias un dispositivo

Con una clave por dispositivo, borra la línea de ese dispositivo en cada servidor. Haz una copia del archivo, borra por comentario y lista lo que queda:

sed -i.bak '/ me@desktop$/d' ~/.ssh/authorized_keys
ssh-keygen -lf ~/.ssh/authorized_keys

Cualquiera que haya tenido acceso puede cambiar un comentario, así que para un dispositivo robado busca por huella, como se explica en revocar una clave SSH. Quita también la clave de GitHub y servicios parecidos.

Con una clave copiada, el dispositivo perdido tiene la misma clave que todos los demás. Crea una clave nueva, instálala en todas partes, quita la clave pública antigua de cada servidor y servicio, y copia la clave privada nueva a los dispositivos que te quedan. Hasta que lo hagas, solo la frase de contraseña protege la antigua.

La misma configuración en todas partes

Las claves privadas cambian según el dispositivo, pero ~/.ssh/config puede ser idéntico, siempre que cada dispositivo llame igual a su clave:

Host *
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes

Host prod
    HostName 203.0.113.10
    User deploy

La configuración no contiene secretos, así que puede vivir en un repositorio de dotfiles o en una carpeta sincronizada. Deja fuera los archivos id_* sin .pub. Consulta ejemplos del archivo ssh config para los patrones de hosts, y un gestor de claves SSH con bóveda cifrada si prefieres tener claves y servidores juntos.

Preguntas

¿Puedo copiar mi clave privada SSH a otro ordenador?

Funciona, y a OpenSSH le da igual dónde se creó la clave. El precio llega al final: si una copia se filtra o pierdes un dispositivo, hay que cambiar la clave en cada servidor y en cada dispositivo que la tenga.

¿Puedo poner mi carpeta .ssh en Dropbox, iCloud o un repositorio de dotfiles?

Guarda ahí la configuración y las claves públicas si quieres, nunca las claves privadas. Una carpeta sincronizada o el historial de Git guardan copias que no puedes borrar del todo.

¿Cuántas claves admite authorized_keys?

No hay un límite práctico. Cada línea es una clave, y un comentario como me@laptop al final permite distinguirlas.

Fuentes

Más en Claves y acceso

Todas las guías