Linux / Comando ssh-copy-id: registrar y comprobar una clave pública SSH

ssh-copy-id agrega la clave pública SSH local a authorized_keys de la cuenta remota para preparar el inicio de sesión con clave pública. No es un comando para copiar la clave privada al servidor.

Primero debe poder conectarse a la cuenta de destino mediante inicio de sesión con contraseña u otro método de autenticación. Especifique el archivo de clave pública que se registrará con -i para reducir la posibilidad de seleccionar una clave incorrecta entre varias claves locales. La herramienta intentará conectarse por SSH para comprobar si la clave está registrada, y el comportamiento puede variar según la política del servidor.

Sintaxis básica

ssh-copy-id [opciones] [usuario@]host

La implementación instalada y las opciones pueden variar según la distribución. Verifique la descripción de man ssh-copy-id en el sistema actual.

Ejemplos de uso

Verificar la clave pública a registrar

El ejemplo requiere el par ~/.ssh/id_ed25519_work y su clave pública .pub. Compruebe que el archivo que registrará contiene la clave pública y compare su huella; la extensión por sí sola no demuestra el tipo de contenido. Sustituya de forma coherente usuario, servidor y ruta en todos los ejemplos.

ssh-keygen -lf ~/.ssh/id_ed25519_work.pub

Vista previa antes del registro real

Cuando su implementación admita -n, revise las claves que se añadirían antes de efectuar el registro. La consulta puede abrir una conexión SSH y solicitar autenticación, pero no añade la clave a authorized_keys.

ssh-copy-id -n -i ~/.ssh/id_ed25519_work.pub alice@server.example.com

Registrar la clave pública

Después de verificar la clave del host remoto, la clave pública se agrega a la cuenta correspondiente.

ssh-copy-id -i ~/.ssh/id_ed25519_work.pub alice@server.example.com

Verificación después del registro de clave pública

ssh-copy-id agrega la clave pública local a la lista de claves autorizadas de la cuenta remota. Debe poder acceder primero a la cuenta remota y tener permisos en esa cuenta.

ssh-copy-id -i ~/.ssh/id_ed25519_work.pub user@server.example.test

Salida que puede aparecer cuando el registro es exitoso:

Number of key(s) added: 1

Pruebe en otra terminal la conexión SSH con ssh -o IdentitiesOnly=yes -o PreferredAuthentications=publickey -i ~/.ssh/id_ed25519_work user@server.example.test, usando sus datos reales. La prueba limita el método a clave pública y reduce las identidades ofrecidas por el agente. Si su configuración añade otras claves IdentityFile, consulte el diagnóstico con -v y confirme que la huella de la clave aceptada coincide con la prevista; no confunda el éxito de otra clave con el de esta. Puede solicitar la frase de contraseña local de la clave privada. Conserve la sesión anterior y la vía de recuperación antes de cambiar la autenticación por contraseña.

Opciones y formatos principales

Opción o formato Descripción
-i archivo_de_clave_pública Seleccione explícitamente la clave pública que se va a registrar.
-n Muestra las claves que añadiría sin registrarlas; puede conectarse por SSH para comprobar las existentes.
-p puerto Especifique el puerto del servidor SSH remoto.
-s Use el método de transferencia SFTP en implementaciones compatibles.
-f Puede agregarse forzosamente sin verificar si la clave ya está registrada, por lo que se debe tener cuidado con las duplicaciones.

Precauciones al usar

No ignore las advertencias de clave del host y continúe. No desactive la autenticación con contraseña existente hasta que haya registrado y verificado en una nueva terminal que puede iniciar sesión con ssh -i ~/.ssh/id_ed25519_work alice@server.example.com. Para eliminar una clave pública registrada, haga una copia de seguridad de la línea exacta correspondiente en la cuenta remota ~/.ssh/authorized_keys y elimínela; conserve las demás claves.

Preguntas frecuentes

¿Por qué se solicita la contraseña incluso después de ejecutar ssh-copy-id?

Durante el registro puede necesitar el método de autenticación previo. Después, distinga la frase de contraseña de la clave privada local —normal si está protegida— de la contraseña de la cuenta remota. Si se solicita esta última, revise la clave seleccionada, los permisos de authorized_keys y la configuración de SSH.

Documentación oficial

Se pueden consultar el funcionamiento exacto de las opciones y las diferencias de implementación en la documentación oficial relacionada con ssh-copy-id.