
Estoy tratando de aprender esto en lugar de simplemente seguir guías para poder recomendar acciones adecuadas cuando la gente pregunta (y lo hacen). Esto es lo que anoté.
Primero, genere ambas claves con un comando como este:
ssh-keygen -b 2048 -t rsa -C comment -f ~/.ssh/id_rsa
Luego inserta la parte pública de la clave en el archivo autorizado_keys2
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys2
(y luego cámbielo a 600 o similar)
Y descarga la clave privada a su computadora (id_rsa) y la introduce en Putty para que la lea y la autentique.
¿Son estos los pasos correctos para configurar esta autenticación de clave pública/privada para iniciar sesión sin contraseña en SSH?
Respuesta1
Si bien los pasos que ha descrito funcionarán, existe un problema. Está generando el par de claves en la computadora de destino (remota) y luego descargando el archivo de clave privada a su sistema local. Aquí hay implicaciones de seguridad que no debes pasar por alto:
- Si el control remoto ya está comprometido, es posible que alguien haya obtenido su contraseña.
- Si el sistema remoto se ve comprometido en el futuro, el atacante tendrá acceso a su archivo de clave privada (y el lujo de utilizar un ataque de fuerza bruta fuera de línea para intentar descifrarlo).
Dado que estás utilizando pares de claves ssh para (intentar) resolver algunos de los problemas inherentes a la autenticación de contraseña, normalmente querrás hacer las cosas de esta manera:
Genere el par de claves en su sistema local. Idealmente, la clave privada (a) nunca se almacenará en un sistema de archivos compartido (por ejemplo, el directorio de inicio de NFS) y (b) nunca se almacenará en una computadora que permita inicios de sesión remotos.
Publique la clave pública en todas partes. Mantengo mis claves públicas en un sitio web para poder obtenerlas cuando las necesite. Coloque la clave pública en los
authorized_keys
archivos apropiados de los sistemas a los que se conectará.
Si es especialmente paranoico, puede almacenar su clave privada en una memoria USB y usarla solo para cargar la clave en un archivo ssh-agent
. En este punto, ya no necesita el archivo de clave real.
Respuesta2
Puede ser mejor generar la clave en los sistemas cliente. Puede terminar con un archivo de claves_autorizadas más grande, pero es más fácil desactivar un sistema comprometido. Si migra la clave privada del servidor, deberá regenerar y migrar la clave a todos los sistemas cliente. Cada cliente debe tener su propia clave.
Putty utiliza puttygen
para generar la clave. puttygen
También proporcionará la clave pública en el formato correcto para pegarla en el sistema del cliente. Es mejor proteger la clave con una frase de contraseña si se utiliza para iniciar sesión. Pageant
o ssh-agent
se puede utilizar para mantener la clave desprotegida en la memoria de modo que no sea necesario volver a ingresar la frase de contraseña en cada conexión.
Una vez que haya agregado una clave y haya configurado la protección, puede agregar claves adicionales sin necesidad de restablecer los permisos. Normalmente subo la clave pública del sistema con un nombre como example.pub
donde, por ejemplo, está el nombre del sistema al que pertenece la clave.
Muchas implementaciones han vuelto a utilizarlo authorized_keys
como archivo clave. Este archivo se puede utilizar para restringir el sistema desde el que se aceptará la clave, forzar la ejecución de un comando, limitar el acceso y otras cosas. Vea la man
página para más detalles.
En algunos casos, puede resultar útil tener varias claves en el sistema cliente. Esto se puede hacer para admitir procesos por lotes que se ejecutan con claves que no tienen contraseña.
Respuesta3
Eso se ve bien. Mucha gente lo haría en la dirección opuesta (generar la clave localmente y luego enviarla .pub
al servidor), pero cualquiera de las dos puede funcionar.