¿Cómo se puede solucionar un error SSH "Permiso denegado (clave pública)" en Linux?
¿Tus claves SSH públicas te están causando dificultades? Pruebe una de estas soluciones.
SSH es una herramienta útil para conectarse a máquinas remotas, pero es posible que se encuentre con un error de "Permiso denegado (clave pública)" relacionado con su clave pública en Linux. Afortunadamente, existen algunas soluciones sencillas que puede intentar para solucionar el problema.
¿Qué es una clave pública?
Cuando genera un par de claves para SSH en Linux, se le proporcionará una clave pública y una clave privada. La clave privada permanecerá con usted como un secreto celosamente guardado, pero la clave pública es la que se transmitirá a servidores remotos para permitirle iniciar sesión sin contraseña. Su cliente SSH local hará coincidir la clave pública con la clave privada cuando se conecte.
La ventaja de este método es que sólo tienes que dar la clave pública. Siempre que mantenga su clave privada en privado, esto debería mantenerlo seguro en caso de que su clave pública se vea comprometida. La clave pública será inútil por sí sola.
OpenSSH, el cliente y servidor SSH más utilizado en el mundo del código abierto, requiere que el archivo que contiene las claves públicas en la máquina remota ("ssh/authorized_keys" en su directorio de inicio) tenga ciertos permisos. No funcionará si los permisos de escritura están configurados para otros usuarios, lo que se conoce como "escribibilidad mundial". Debido a que el nombre del directorio comienza con un punto (.), no aparecerá en ningún listado de ls a menos que use el comando ls -A.
Los permisos pueden cambiar si el archivo se copió desde otra computadora o si lo creó usted mismo. Afortunadamente, esto es fácil de solucionar.
Verifique sus permisos de clave pública
El archivo Authorized_keys es simplemente un archivo de texto sin formato que contiene todas las claves públicas de los clientes que desea que puedan iniciar sesión en su cuenta en la máquina remota. Para ver sus permisos, use el comando ls con la opción -l:
ls -l ~/.ssh/authorized_keys
Esto mostrará la configuración de permisos para el propietario, el grupo y otros usuarios. Presta atención a las últimas seis letras de la cadena. Si ve una "w" en ellos, significa que el grupo u otros pueden escribirle, haciéndolo inseguro.
Querrá que usted pueda escribir en este archivo, pero no el grupo ni otros. Para dar acceso a los usuarios correctos, puede cambiar los permisos con chmod.
Hay dos formas: numérica y simbólicamente.
La forma numérica es más corta, pero hay que memorizar los números de permiso octales:
chmod 700 ~/.ssh/authorized_keys
El método simbólico es más mnemotécnico:
chmod go-w ~/.ssh/authorized_keys
Copie claves de forma segura utilizando ssh-agent
Puede copiar y pegar manualmente cualquier clave pública de su máquina en el archivo ~/.ssh/.authorized_keys , pero usar el programa ssh-agent reducirá las posibilidades de errores de permisos.
Para iniciar ssh-agent, use este comando:
eval "$(ssh-agent-s)"
Para iniciar sesión en un servidor remoto usando ssh-agent, use la opción -A con ssh
ssh -A user@example.com
Verifique la configuración sshd del servidor remoto
Si alguno de estos esfuerzos falla, es posible que deba realizar algunos cambios de configuración en el servidor sshd en la máquina remota si tiene acceso de root. De lo contrario, probablemente tendrás que ponerte en contacto con el administrador del sistema para que te ayude a resolver cualquier problema de conexión SSH. Este es un método de último recurso porque podría hacer que su sistema sea menos seguro.
El archivo de configuración de todo el sistema para sshd es /etc/ssh/sshd_config. Como es propiedad de root, necesitarás usar sudo para editarlo. Por ejemplo, para editarlo con Vim:
sudo vim /etc/ssh/sshd_config
Para permitir que sshd le permita iniciar sesión incluso si su archivo Authorized_keys se puede escribir en todo el mundo, configure la opción "StrictModes" en "no" en este archivo.
Guárdelo y reinicie el servidor SSH:
sudo systemctl restart sshd.service
Ahora puede corregir errores de permisos de clave pública SSH
Es posible que se produzcan errores relacionados con las claves públicas SSH en sistemas remotos. Afortunadamente, la mayoría de las veces todo lo que tienes que hacer es verificar y configurar los permisos del archivo para que nadie más pueda ver tu clave. También puedes usar ssh-agent para conexiones más confiables. Como último recurso, puedes hacer que el servidor SSH sea menos estricto.