Pregunta simple sobre clave pública/privada SSH

Pregunta simple sobre clave pública/privada SSH

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_keysarchivos 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 puttygenpara generar la clave. puttygenTambié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. Pageanto ssh-agentse 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.pubdonde, por ejemplo, está el nombre del sistema al que pertenece la clave.

Muchas implementaciones han vuelto a utilizarlo authorized_keyscomo 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 manpá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 .pubal servidor), pero cualquiera de las dos puede funcionar.

información relacionada