Si Terminal de macOS muestra el mensaje «UNPROTECTED PRIVATE KEY FILE» o indica que su clave SSH es demasiado accesible, restrinja el acceso a la clave privada y compruebe el directorio .ssh. Abra Terminal y ejecute chmod 600 en el archivo de clave que realmente utiliza. Esto hace que solo su cuenta pueda leerlo y escribirlo; SSH ignora los archivos de clave privada a los que otros usuarios pueden acceder. Manual ssh(1) de OpenBSD
Corregir los permisos de la clave privada
Primero identifique el archivo de la clave. Los nombres predeterminados habituales de las claves privadas de SSH incluyen id_ed25519 e id_rsa, pero es posible que tenga otro nombre o ubicación. El sufijo .pub identifica una clave pública; no aplique esta solución a ese archivo en lugar de a la clave privada.
Para una clave Ed25519 predeterminada, introduzca:
chmod 600 "$HOME/.ssh/id_ed25519"
Para otra clave, sustituya id_ed25519 por el nombre real de su archivo. Poner la ruta entre comillas evita que los espacios y otros caracteres del intérprete de comandos en el nombre del archivo se traten como sintaxis. Si la clave se encuentra en otro lugar, use su ruta completa dentro de las comillas. 600 concede acceso de lectura y escritura al propietario y elimina el acceso para el grupo y otros usuarios. Manual chmod(1) de OpenBSD
Puede inspeccionar el modo resultante con ls -l "$HOME/.ssh/id_ed25519". Una visualización típica comienza con -rw-------; los primeros tres caracteres de permiso después del tipo de archivo muestran el acceso del propietario, y los grupos restantes muestran que no hay acceso para el grupo ni para otros. El propietario del archivo también debe ser su cuenta. Si pertenece a otro usuario, es posible que chmod falle o que el cliente SSH aún no pueda utilizarlo. Compruebe la propiedad con ls -l; evite cambiar la propiedad a ciegas, especialmente con sudo, porque la solución correcta depende de por qué el archivo pertenece a otra persona.
Comprobar el directorio .ssh
El manual de SSH recomienda que su propietario pueda leer, escribir y realizar búsquedas en ~/.ssh/, y que sea inaccesible para los demás. Si SSH informa de un problema de permisos en el propio directorio, ejecute:
chmod 700 "$HOME/.ssh"
Esto elimina el acceso al grupo y a otros, al tiempo que permite a su cuenta el acceso completo al directorio. Si la clave está almacenada en una carpeta diferente, compruebe cada directorio de su ruta: la cuenta necesita permiso de búsqueda (ejecución) para acceder al archivo. No ejecute chmod de forma recursiva en todo su directorio de inicio o en la carpeta .ssh como primera solución; eso puede cambiar los permisos en archivos no relacionados con necesidades diferentes. Manual ssh(1) de OpenBSD
Confirmar que SSH esté usando esa clave
Una clave corregida aún puede dar la impresión de no funcionar si SSH está buscando en otra parte u ofreciendo una identidad diferente. Utilice -i para especificar una clave para una conexión específica. Sustituya la cuenta y el host del ejemplo por los suyos propios:
ssh -i "$HOME/.ssh/id_ed25519" user@example.com
La opción -i selecciona el archivo de identidad utilizado para la autenticación por clave pública. Manual ssh(1) de OpenBSD Para obtener un registro de conexión más detallado, añada -v:
ssh -v -i "$HOME/.ssh/id_ed25519" user@example.com
Si gestiona varios hosts, puede configurar IdentityFile en ~/.ssh/config; el bloque Host determina qué ajustes de conexión se aplican. El cliente también puede probar claves suministradas por ssh-agent. IdentitiesOnly yes puede limitar las identidades ofrecidas a los archivos de identidad configurados cuando un agente tiene cargadas muchas claves. Manual ssh_config(5) de OpenBSD
Saber cuándo el error está en otra parte
Una advertencia local de permisos de la clave privada es diferente de Permission denied (publickey). Esto último puede significar que el servidor no reconoce la clave pública correspondiente, que el nombre de usuario es incorrecto o que SSH está intentando usar otra identidad. La clave pública correspondiente a su clave privada debe estar autorizada para la cuenta en el host remoto; cambiar los permisos locales no instala esa clave pública en el servidor. Manual ssh(1) de OpenBSD
Si chmod devuelve «Operation not permitted», compruebe si usted es el propietario del archivo y si la ruta apunta a la clave prevista. Evite hacer que una clave privada sea legible de forma generalizada para silenciar la advertencia: la restricción de SSH protege la credencial, y eliminarla puede hacer que el cliente rechace la clave. Una vez que la clave privada y su directorio tengan los permisos adecuados, vuelva a intentarlo con -v y siga la salida de diagnóstico para distinguir un problema de archivo local de un problema de autenticación o del lado del servidor.
Fuentes
ssh(1) — Páginas del manual de OpenBSD — OpenBSD
chmod(1) — Páginas del manual de OpenBSD — OpenBSD