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:
-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:
Ingrese una ubicación de archivo para guardar la clave (presione Enter para usar la ubicación predeterminada ~/.ssh/id_rsa)
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:
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:
Las claves SSH no existen
Las claves SSH no están en la ubicación predeterminada
Las claves SSH tienen permisos incorrectos
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:
-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.
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:
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.
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.
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:
Use una frase de contraseña (passphrase): Al generar su clave SSH, considere usar una frase de contraseña para mayor seguridad.
Diferentes claves para diferentes servidores: Para mayor seguridad, considere usar diferentes claves para diferentes servidores o propósitos.
Haga una copia de seguridad de sus claves (Backup your keys): Mantenga copias de seguridad de sus claves SSH en una ubicación segura.
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:
Comprender la autenticación con claves SSH y cómo funciona el comando ssh-copy-id
Generar pares de claves SSH con el comando ssh-keygen
Verificar y corregir los permisos de las claves SSH
Usar ssh-copy-id correctamente para copiar su clave pública a un servidor remoto
Probar y verificar la autenticación con claves SSH
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.