Qué hacer cuando la autenticación basada en claves no funciona después de ssh-copy-id

Recientemente aprovisioné un servidor privado virtual (VPS) de Ubuntu en Vultr. Yo mismo soy partidario de CentOS, pero la tarea en la que estaba trabajando recomendaba Ubuntu.

Para configurar la autenticación basada en claves desde mi computadora portátil al servidor,

  • Genere un nuevo par de claves SSH (llamado "ubuntu") en mi Mac usando el comando: ssh-keygen -t rsa -b 4096
  • Luego utilicé la ssh-copy-idutilidad para copiar mi clave pública al authorized_keysarchivo en mi Vultr VPS:ssh-copy-id -i .ssh/ubuntu [email protected]

Como esperaba, la utilidad solicitó mi contraseña de VPS para completar la transferencia de la clave pública. Cuando todo estuvo hecho, intenté iniciar sesión en mi VPS.

Debería haberme dejado pasar sin requerir una contraseña:

ssh -i .ssh/ubuntu [email protected]

Pero me seguían pidiendo una contraseña. ?

  • Revisé mi authorized_keysarchivo en el VPS para asegurarme de que mi clave pública se hubiera copiado correctamente. Cheque. ??
  • Me aseguré de que el archivo fuera de lectura y escritura solo para mí y para nadie más. Cheque. ??
  • Me aseguré de que las siguientes opciones estuvieran habilitadas en /etc/ssh/sshd_config: PubkeyAuthentication yesy AuthorizedKeysFile .ssh/authorized_keys. Cheque. ??

Aún así, me seguían pidiendo una contraseña al iniciar sesión desde mi computadora portátil.

Después de unos minutos en StackOverflow, aprendí sobre los directorios domésticos cifrados, que son predeterminados en algunos entornos, incluido Ubuntu.

Los directorios de inicio cifrados no se descifran hasta que el inicio de sesión inicial es exitoso. Sin embargo, mi authorized_keysarchivo se almacena en mi directorio personal.

Por lo tanto, mi primer intento de conexión requerirá una contraseña. Las conexiones posteriores se realizarán correctamente sin una contraseña, ya que el servicio SSH podrá leer mi authorized_keysarchivo en mi directorio personal descifrado.

Para solucionar esto, creé un directorio con el nombre de mi nombre aritdevde usuario fuera de mi directorio de inicio (elegí /etc/) y le di permisos completos para mí, pero permisos de lectura y ejecución para todos los demás. A continuación, moví mi authorized_keysarchivo a /etc/aritdev/. Luego, actualicé el AuthorizedKeysFileparámetro en /etc/ssh/sshd_config:

AuthorizedKeysFile /etc/%u/authorized_keys

Finalmente, reinicié el servicio SSH. Para probar, me desconecté de mi VPS y luego intenté volver a iniciar sesión. BOOM - ¡funcionó! ??

¿Qué problemas relacionados con la autenticación del servidor ha experimentado? Como los resolviste? ¡Comparte a continuación! ??