GNU/Linux >> Tutoriales Linux >  >> Linux

Uso de ssh-keygen y uso compartido para la autenticación basada en claves en Linux

Si alguna vez ha trabajado como administrador de sistemas (o quiere hacerlo en el futuro), necesita una buena comprensión de SSH. No le explicaré el concepto general, ya que ya se ha explicado aquí en Enable Sysadmin. Sin embargo, quiero ver una forma potencialmente mejor de usarlo. SSH es el protocolo de acceso remoto más utilizado en el mundo. Por lo tanto, tiene sentido que intentemos mejorar su uso tanto como sea posible.

Usé SSH para conectarme de forma remota a miles de máquinas de clientes durante mi tiempo como ingeniero de soporte, y estoy seguro de que otros han tenido una experiencia similar. Con la autenticación SSH tradicional, necesita el nombre de usuario y la contraseña de la cuenta en la que desea iniciar sesión cada vez que desea acceder a un sistema. No suena tan mal, ¿verdad? Pero, ¿qué sucede cuando necesita saltar de un sistema a otro con regularidad? ¿O qué pasa si sus responsabilidades incluyen sesiones remotas a los mismos 100 sistemas durante todo el día para controles de salud? Hay otra forma de lograr el inicio de sesión y, con una pequeña inversión inicial, puede ser mucho más eficiente en general.

Proceso de endurecimiento

Es objetivamente cierto que una clave encriptada es un objetivo mucho más difícil que un nombre de usuario y contraseña para aquellos con malas intenciones. Aunque puede tomar un poco de aprendizaje, la creación y el uso de la autenticación basada en claves SSH valen la inversión para todos los administradores de sistemas.

Así es como funciona. Generas una clave pública y una clave privada coincidente. El archivo de clave privada actúa como una contraseña y debe mantenerse a salvo. Sin embargo, la clave pública se copia en los sistemas de destino a los que se conecta regularmente. Coloque la clave pública en el directorio de inicio de su cuenta en el servidor de destino. Cuando intenta iniciar sesión, se verifican las claves y se otorga acceso.

Ahora, hay dos maneras en que puedes hacer esto. Uno es más conveniente y el otro es un poco tedioso pero con protección adicional para usted. La forma conveniente es no especificar una contraseña junto con la clave privada. El resultado es que no tiene que ingresar una contraseña cuando usa su clave privada para la autenticación. Esto significa que si alguien obtiene su clave privada, también puede usarla para autenticarse. El otro método es proteger con contraseña su clave privada para que se le solicite la contraseña al autenticarse (piense en la autenticación de dos factores usando tanto la clave privada como la contraseña).

ssh-keygen sin contraseña

Para generar un par de claves SSH, use el siguiente comando:

[user@host ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:veutUNPio3QDCyvkYm1oIx35hmMrHpPKWFdIYu3HV+w [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|   .     .       |
|  o o     o      |
| . = o   o .     |
|  o + = S E .    |
| ..O o + * +     |
|.+% O . + B .    |
|=*oO . . + *     |
|++.     . +.     |
+----[SHA256]-----+ 

De forma predeterminada, sus claves públicas y privadas se guardan en su ~/.ssh/id_rsa y ~/.ssh/id_rsa.pub archivos, respectivamente.

ssh-keygen con contraseña

La creación de una clave protegida con contraseña se parece a esto:

[user@host ~]$ ssh-keygen -f .ssh/key-with-password
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in .ssh/key-with-password.
Your public key has been saved in .ssh/key-with-password.pub.
The key fingerprint is:
SHA256:s7GGB7EyHUry4aOcNPKmhNKS7dl1YsMVLvFZJ77VxAo [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|    . + =.o ...  |
|     = B XEo o.  |
|  . o O X =....  |
| = = = B = o.    |
|= + * * S .      |
|.+ = o + .       |
|  + .            |
|                 |
|                 |
+----[SHA256]-----+

Usa el -f opción para especificar el archivo donde se guardarán las claves. En el ejemplo anterior, las claves pública y privada se almacenan en /home/user/.ssh/key-with-pass y /home/user/.ssh/key-with-pass.pub archivos, respectivamente.

Advertencia

Durante la generación posterior de pares de claves SSH, si no especifica un nombre de archivo único, se le solicitará permiso para sobrescribir el id_rsa existente. y id_rsa.pub archivos Si sobrescribe el id_rsa existente y id_rsa.pub archivos, debe reemplazar la clave pública anterior con la nueva en TODOS de los servidores SSH que tienen su antigua clave pública.

Una vez que haya generado las claves, se almacenan en el /user/home/.ssh/ directorio con los siguientes permisos:

  • Clave privada - 600
  • Clave pública - 644

Aún no has terminado. Veamos el paso final en la autenticación exitosa basada en clave SSH.

Claves compartidas

Para que todo esto funcione, debe compartir su clave pública con las máquinas remotas a las que intenta conectarse mediante SSH. Usa el ssh-copy-id comando para copiar su clave pública en el sistema de destino. De forma predeterminada, la ruta del archivo es /home/user/.ssh/id_rsa.pub . Emite el comando, especifica el archivo que está compartiendo, luego el usuario/host con el que lo estamos compartiendo. Debería verse así:

[user@host ~] $ ssh-copy-id -i .ssh/key-with-pass.pub user@destination
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
user@destination password: changeme
Number of key(s) added: 1

Ahora que ha compartido la clave pública con el host de destino, puede autenticarse en el servidor remoto pasando la clave privada correspondiente. Si especificó una ruta de archivo para su clave privada, debe proporcionarla aquí. De lo contrario, el valor predeterminado es /home/_user_/.ssh/id_rsa .

Visto aquí:

[user@host ~]$ ssh -i .ssh/key-with-password user@desination 
Enter passphrase for key '.ssh/key-with-password' : password here if you set one
[user@destination ~] $

Ventajas y resumen

Las ventajas de utilizar la autenticación basada en claves SSH son claras. Las contraseñas se roban todos los días, principalmente debido a un error humano, pero también debido a la habilidad y determinación del atacante. Una clave cifrada, y más específicamente, una clave cifrada protegida con contraseña, hace que su autenticación SSH sea aún más difícil de atacar. Todavía necesita lograr un equilibrio entre disponibilidad y seguridad, pero eso se maneja de manera diferente en cada entorno.

[ Curso gratuito en línea:Descripción general técnica de Red Hat Enterprise Linux. ]


Linux
  1. Consejos de Linux para usar cron para programar tareas

  2. Hoja de trucos para usuarios y permisos de Linux

  3. Guía completa para usar AsciiDoc en Linux

  4. Usando kbhit() y getch() en Linux

  5. ¿Los servidores Linux que usan AD/Kerberos para autenticación/autorización necesitan cuentas de computadora?

Ponga en funcionamiento podman en Windows usando Linux

Consejos para usar el comando superior en Linux

Las 10 mejores distribuciones de Linux para computadoras portátiles y de escritorio

Cómo encontrar si un usuario está utilizando autenticación SSH basada en contraseña o clave en Linux

Cómo configurar la autenticación multifactor para SSH en Linux

Uso de ifstat para estadísticas de red de Linux