Cómo Resolver el Error 'No Identities Found' de SSH Copy-ID

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

El comando ssh-copy-id es una herramienta útil para configurar fácilmente la autenticación basada en claves SSH entre servidores. Sin embargo, ocasionalmente puede encontrar el error "/usr/bin/ssh-copy-id: error: no identities found" al intentar usar este comando. Este tutorial lo guiará a través de los pasos para solucionar y resolver este problema, asegurando un proceso de autenticación basado en claves SSH sin problemas. Al final de este laboratorio, comprenderá cómo funciona la autenticación de claves SSH y podrá configurarla correctamente en sus sistemas.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/BasicFileOperationsGroup -.-> linux/chmod("Permission Modifying") linux/RemoteAccessandNetworkingGroup -.-> linux/ssh("Secure Connecting") subgraph Lab Skills linux/ls -.-> lab-398384{{"Cómo Resolver el Error 'No Identities Found' de SSH Copy-ID"}} linux/cat -.-> lab-398384{{"Cómo Resolver el Error 'No Identities Found' de SSH Copy-ID"}} linux/chmod -.-> lab-398384{{"Cómo Resolver el Error 'No Identities Found' de SSH Copy-ID"}} linux/ssh -.-> lab-398384{{"Cómo Resolver el Error 'No Identities Found' de SSH Copy-ID"}} end

Entendiendo la Autenticación con Claves SSH

Antes de sumergirnos en la solución del error "no identities found", es importante comprender qué es la autenticación con claves SSH y cómo funciona.

¿Qué es la Autenticación con Claves SSH?

La autenticación con claves SSH (Secure Shell) es un método para iniciar sesión en sistemas remotos de forma segura sin tener que escribir una contraseña cada vez. Utiliza un par de claves criptográficas:

  • Una clave privada que permanece en su máquina local
  • Una clave pública que se copia al servidor remoto

Cuando intenta conectarse a un servidor remoto, su cliente SSH utiliza su clave privada para crear una firma. El servidor verifica esta firma utilizando su clave pública almacenada en su archivo authorized_keys. Si la firma es válida, obtiene acceso sin necesidad de ingresar una contraseña.

¿Qué es ssh-copy-id?

El comando ssh-copy-id es una utilidad que simplifica el proceso de copiar su clave pública a un servidor remoto. Agrega su clave pública al archivo ~/.ssh/authorized_keys del servidor remoto, lo que permite la autenticación sin contraseña en futuras conexiones.

Verifiquemos si ya tiene alguna clave SSH en su sistema. Ejecute el siguiente comando en su terminal:

ls -la ~/.ssh

Si no ve ningún archivo o el directorio .ssh no existe, no se preocupe, crearemos todo en el siguiente paso.

Generando Claves SSH

Si no tiene claves SSH o desea crear nuevas, puede generarlas utilizando el comando ssh-keygen. Este es a menudo el primer paso para resolver el error "no identities found".

Creando un Nuevo Par de Claves SSH

Generemos un nuevo par de claves SSH ejecutando el siguiente comando:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Este comando:

  • -t rsa especifica el tipo de clave a crear (RSA)
  • -b 4096 especifica la longitud en bits (cifrado más fuerte)
  • -C agrega un comentario (generalmente un correo electrónico) para ayudar a identificar la clave

Cuando ejecute este comando, se le pedirá que:

  1. Ingrese una ubicación de archivo para guardar la clave (presione Enter para usar la ubicación predeterminada ~/.ssh/id_rsa)
  2. Ingrese una frase de contraseña (puede presionar Enter dos veces para no tener frase de contraseña, pero usar una agrega una capa adicional de seguridad)

La salida debería verse similar a:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/labex/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/labex/.ssh/id_rsa
Your public key has been saved in /home/labex/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:abcdefghijklmnopqrstuvwxyz1234567890ABCD [email protected]
The key's randomart image is:
+---[RSA 4096]----+
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
+----[SHA256]-----+

Verificando la Creación de la Clave SSH

Ahora verifiquemos que las claves se crearon correctamente:

ls -la ~/.ssh

Ahora debería ver tanto la clave privada (id_rsa) como la clave pública (id_rsa.pub) en la salida:

total 20
drwx------ 2 labex labex 4096 Sep 15 10:10 .
drwxr-xr-x 5 labex labex 4096 Sep 15 09:55 ..
-rw------- 1 labex labex 3389 Sep 15 10:10 id_rsa
-rw-r--r-- 1 labex labex  746 Sep 15 10:10 id_rsa.pub
-rw-r--r-- 1 labex labex  444 Sep 15 10:00 known_hosts

Veamos también el contenido de su archivo de clave pública:

cat ~/.ssh/id_rsa.pub

La salida debe ser una sola línea que comience con ssh-rsa seguida de una larga cadena de caracteres y que termine con su dirección de correo electrónico o comentario.

Ahora que hemos confirmado que nuestras claves SSH existen, podemos pasar al siguiente paso: solucionar y resolver el error "no identities found".

Entendiendo y Resolviendo el Error 'No Identities Found'

Ahora que tenemos nuestras claves SSH en su lugar, comprendamos por qué ocurre el error "no identities found" y cómo solucionarlo.

Causas Comunes del Error

El error "no identities found" generalmente ocurre por una de estas razones:

  1. Las claves SSH no existen
  2. Las claves SSH no están en la ubicación predeterminada
  3. Las claves SSH tienen permisos incorrectos
  4. El comando ssh-copy-id no puede encontrar ninguna clave pública para usar

Dado que ya hemos confirmado que nuestras claves SSH existen en la ubicación predeterminada, verifiquemos los permisos.

Verificando y Corrigiendo los Permisos de las Claves SSH

SSH es muy particular con los permisos de archivo por razones de seguridad. Ejecute el siguiente comando para verificar los permisos de su directorio .ssh y su contenido:

ls -la ~/.ssh

Para una seguridad adecuada:

  • El directorio .ssh debe tener permisos 700 (rwx------)
  • La clave privada (id_rsa) debe tener permisos 600 (rw-------)
  • La clave pública (id_rsa.pub) debe tener permisos 644 (rw-r--r--)

Si sus permisos son incorrectos, puede corregirlos con los siguientes comandos:

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

Usando ssh-copy-id Correctamente

Ahora intentemos usar el comando ssh-copy-id correctamente. La sintaxis correcta es:

ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@host_remoto

Donde:

  • -i especifica el archivo de identidad (clave pública) a usar
  • usuario es su nombre de usuario en el servidor remoto
  • host_remoto es el nombre de host o la dirección IP del servidor remoto

Para nuestro entorno de laboratorio, simularemos esto usando la máquina local. Ejecute:

ssh-copy-id -i ~/.ssh/id_rsa.pub labex@localhost

Se le pedirá la contraseña del usuario remoto.

Abra una ventana de terminal en el entorno de escritorio, solo la terminal del entorno de escritorio tendrá las variables de entorno configuradas.

Retrieve Password

Para recuperar la contraseña, ejecute el siguiente comando.

printenv | grep PASSWORD

Note: Debe ejecutar este comando en la terminal del entorno de escritorio, no en la terminal que abrió desde la barra de menú superior.

Este comando mostrará todas las variables de entorno que contengan "PASSWORD". Busque una línea que diga LABEX_PASSWORD=.... Los caracteres después del signo igual son su contraseña.

Ingresaría esa contraseña y la clave pública se copiaría al servidor remoto.

Si ve un mensaje como "Number of key(s) added: 1", entonces su clave se copió correctamente.

Verificando la Autenticación con Claves SSH

Ahora que hemos resuelto el error "no identities found" y hemos copiado con éxito nuestra clave SSH al servidor remoto, verifiquemos que la autenticación con claves SSH funcione correctamente.

Probando la Autenticación con Claves SSH

En un entorno real, probaría la autenticación con claves SSH conectándose al servidor remoto:

ssh usuario@host_remoto

Si su clave SSH está configurada correctamente, debería poder iniciar sesión sin ingresar una contraseña (a menos que haya establecido una frase de contraseña para su clave, en cuyo caso deberá ingresarla).

Para nuestro entorno de laboratorio, podemos probar intentando SSH a localhost:

ssh labex@localhost

Si recibe un mensaje que le pide que confirme la conexión (porque localhost no está en su archivo de hosts conocidos), escriba yes.

Es posible que vea un mensaje como:

The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:abcdefghijklmnopqrstuvwxyz1234567890ABCD.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

Si se le pide una contraseña, significa que la autenticación con claves SSH aún no funciona. Pero si inicia sesión correctamente sin ingresar una contraseña, su autenticación con claves SSH funciona correctamente.

Problemas Comunes y Soluciones de Autenticación con Claves SSH

Si aún tiene problemas con la autenticación con claves SSH, aquí hay algunos problemas comunes y soluciones:

  1. Configuración del Servidor SSH: El servidor SSH debe estar configurado para permitir la autenticación de clave pública (public key authentication). Esto generalmente está habilitado de forma predeterminada, pero puede verificarlo examinando el archivo /etc/ssh/sshd_config en el servidor remoto:

    grep PubkeyAuthentication /etc/ssh/sshd_config

    Debería mostrar PubkeyAuthentication yes.

  2. Propiedad del Archivo (File Ownership): Su directorio de inicio y el directorio .ssh deben ser de su propiedad:

    ls -ld ~ ~/.ssh

    Ambos deberían mostrar su nombre de usuario como propietario.

  3. Depurar la Conexión SSH (Debug SSH Connection): Puede usar el indicador verbose (detallado) para depurar las conexiones SSH:

    ssh -v labex@localhost

    Esto mostrará información detallada sobre el proceso de autenticación, lo que puede ayudar a identificar el problema.

Mejores Prácticas para la Gestión de Claves SSH (SSH Key Management Best Practices)

Aquí hay algunas mejores prácticas para administrar las claves SSH:

  1. Use una frase de contraseña (passphrase): Al generar su clave SSH, considere usar una frase de contraseña para mayor seguridad.
  2. Diferentes claves para diferentes servidores: Para mayor seguridad, considere usar diferentes claves para diferentes servidores o propósitos.
  3. Haga una copia de seguridad de sus claves (Backup your keys): Mantenga copias de seguridad de sus claves SSH en una ubicación segura.
  4. Rote las claves regularmente (Regularly rotate keys): Para entornos sensibles, considere rotar sus claves SSH periódicamente.

Siguiendo estos pasos y las mejores prácticas, puede asegurarse de que la autenticación con claves SSH funcione de manera confiable y segura.

Resumen

En este laboratorio, ha aprendido cómo solucionar y resolver el error "no identities found" al usar el comando SSH copy-id. Cubrimos:

  1. Comprender la autenticación con claves SSH y cómo funciona el comando ssh-copy-id
  2. Generar pares de claves SSH con el comando ssh-keygen
  3. Verificar y corregir los permisos de las claves SSH
  4. Usar ssh-copy-id correctamente para copiar su clave pública a un servidor remoto
  5. Probar y verificar la autenticación con claves SSH
  6. Problemas comunes y mejores prácticas para la gestión de claves SSH (SSH key management)

Con estas habilidades, ahora puede configurar conexiones SSH seguras y sin contraseña entre sistemas, lo cual es esencial para la administración y automatización eficiente del sistema. La autenticación con claves SSH no solo proporciona una mejor seguridad que la autenticación con contraseña, sino que también simplifica el proceso de inicio de sesión para los usuarios legítimos.

Recuerde que asegurar adecuadamente sus claves SSH es crucial, ya que proporcionan acceso directo a sus sistemas. Mantenga siempre sus claves privadas seguras y considere usar frases de contraseña (passphrases) para protección adicional.