OS User Security

Cómo usar la clave privada para iniciar sesión en SSH | Guía paso a paso

por Chelsea Bruhl en Sep 26, 2024

How to Use Private Key to Login SSH | Step by Step Guide

¿Quiere conectarse a sus servidores de forma segura? Aprenda cómo utilizar la clave privada para iniciar sesión en SSH.

Secure Shell, o SSH, es un protocolo cifrado para administrar y comunicarse con servidores. Cuando trabaja con un servidor Linux, es posible que pase una cantidad significativa de tiempo en una sesión de terminal conectándose al servidor mediante SSH.

Si bien existen otras formas de iniciar sesión en un servidor SSH, en esta publicación nos centraremos en configurar claves SSH. Las claves SSH son un método altamente seguro para conectarse a su servidor.

En este artículo, MacSecurity le enseñará cómo utilizar una clave privada para iniciar sesión SSH para que pueda acceda a sus servidores de forma remota y segura.

¡Vamos a empezar!

Relacionado: Cómo navegar de forma privada en la Web

Cómo usar la clave privada para iniciar sesión en SSH

Las credenciales de inicio de sesión tradicionales se reemplazan con un par de claves que consta de una clave pública y una privada en claves SSH . Para acceder al servidor, ambas claves son necesarias. La clave privada es única para cada usuario y se guarda en su dispositivo, donde nunca se comparte con el servidor ni con otro usuario.

La clave pública relacionada se puede compartir libremente sin causar ningún daño. La clave pública se puede utilizar para cifrar mensajes que sólo se pueden descifrar con la clave privada. Este atributo se utiliza para verificar la autenticidad del par de claves.

Las claves SSH también son mucho más complicadas que las contraseñas estándar, lo que las hace mucho más difíciles de atacar por fuerza bruta.

Lo que necesita para iniciar sesión SSH usando una clave privada

Antes de comenzar, asegúrese de tener lo siguiente listo para funcionar:

  • Un software de cliente SSH instalado en su sistema macOS.
  • Un editor de texto. 
  • Acceso a Terminal con privilegios de administrador.
  • Un servidor local y remoto.
  • Y tu clave privada. 

Preparando tu servidor

Para agregar un par de claves SSH, ejecute el siguiente comando para crear una carpeta oculta en el directorio de inicio de su cuenta de usuario en su servidor en la nube.

mkdir -p ~/.ssh

Luego use el siguiente comando para limitar los permisos en ese directorio solo a usted mismo.

chmod 700 ~/.ssh

Ahora puede guardar sus claves SSH para autenticación en una ubicación segura. Sin embargo, debido a que las claves se guardan en el directorio de inicio de su usuario, cada usuario que desee utilizar claves SSH para la autenticación debe repetir estos procedimientos en su propio perfil.

Para Linux u otro sistema operativo que admita OpenSSH 

Si está utilizando Linux u otro sistema operativo que admita OpenSSH , ahora puede continuar en su propia computadora. Los usuarios de PuTTY deben pasar a la siguiente sección.

Paso 1 - Utilice el siguiente comando para generar un nuevo par de claves en una terminal.

ssh-keygen -t rsa 

El generador de claves le pedirá la ubicación y el nombre del archivo donde se guardará la clave. Ingrese un nuevo nombre o presione Intro para usar el predeterminado. Aquí id_rsa es el nombre de nuestro archivo de clave privada. Siempre puede especificar una ruta y un nombre diferentes para el archivo de clave privada. Utilizaremos la configuración predeterminada para nuestra demostración.

Paso 2: cree una frase de contraseña para la clave cuando se le solicite (opcional)

Esta es una contraseña básica que protegerá su clave privada si cae en las manos equivocadas. Puede ingresar una contraseña o continuar sin ella. Presione enter dos veces para hacerlo. Vale la pena señalar que es posible que algunas herramientas de automatización no puedan descifrar claves privadas protegidas con contraseña.

Habríamos generado con éxito nuestro par de claves en este punto. También recibimos una 'huella digital' y una 'huella visual' de nuestra clave, que no tenemos que guardar.

La salida será la siguiente:

How to Use a Private Key to Login SSH

Paso 3: configurar el servidor para usar nuestra clave privada

En /home/user/.ssh, ahora deberíamos tener los dos archivos siguientes:

How to Use a Private Key to Login SSH

id_rsa : Nuestra clave privada de SSH

id_rsa.pub: Nuestra clave pública SSH

Tome nota de los permisos de la clave privada ( id_rsa ). ¡LOS PERMISOS SIEMPRE DEBEN SER 600 EN Archivos de clave privada SSH! Si no, use el comando chmod para establecer su permiso en el valor especificado:

chmod 600 /home/user/.ssh/id_rsa

Paso 4: el siguiente paso es configurar nuestro servidor para que podamos iniciar sesión con nuestra clave privada. Esto se puede hacer manualmente conectándose al servidor y configurando todo manualmente, pero hay una utilidad llamada ssh-copy-id que se encarga de todo por nosotros.

Como resultado, simplemente ejecute para configurar nuestro servidor para usar nuestras nuevas claves ssh.

ssh-copy-id USUARIO@IP

Aquí,

  • USUARIO es el nombre de usuario con el que queremos iniciar sesión en el servidor.
  • IP es la dirección IP de nuestro servidor

Paso 5 : con eso, ahora podemos simplemente ingresar SSH a nuestro servidor usando el siguiente comando:

ssh USUARIO@IP

Si anteriormente especificó una frase de contraseña, se le pedirá que lo haga nuevamente:

Tenga en cuenta que si no está utilizando la ruta y los nombres de archivo predeterminados, deberá usar el indicador -i para especificar el archivo de clave privada:
ssh -i /ruta/a/clave/privada USUARIO@IP

Como resultado, ahora podemos ingresar SSH a nuestra máquina usando nuestra CLAVE PRIVADA.

Paso 6: Configure el Agente SSH para almacenar las claves y evitar tener que volver a ingresar la frase de contraseña en cada inicio de sesión (Opcional)
Para iniciar el agente y agregar la clave SSH privada, siga las instrucciones abajo.

ssh-agent $BASH

ssh-add ~/.ssh/id_rsa

Cuando se le solicite, ingrese el código de acceso actual para su clave. Tendrá que proporcionar la ubicación y el nombre de la clave privada si la guardó en algún lugar que no sea la ubicación y el nombre predeterminados.

Después de eso, puede conectarse a su servidor en la nube usando las claves de autenticación, y solo tiene que desbloquear la clave después de que la computadora se reinicie repitiendo los dos últimos pasos.

Uso de PuTTYTray para generar un par de claves (para usuarios de Windows)

Si está utilizando Windows con PuTTYTray para SSH, puede crear un par de claves nuevas con el generador de claves integrado de PuTTY.

Paso 1 - Para comenzar, instale PuTTY y PuTTYgen

Para convertir claves OpenSSH y conectarse al servidor a través de SSH, necesitará PuTTY y PuTTYgen. Desde la página de descarga de PuTTY , puede descargar estas dos utilidades por separado o como un instalador de Windows.

Haga doble clic en el ejecutable en la carpeta de descargas para ejecutar el instalador de PuTTY para Windows y luego continúe con el tutorial de instalación. La mayoría de las configuraciones estarán bien con la configuración predeterminada. PuTTY y PuTTYgen ahora deberían encontrarse en la lista de programas de Windows.

Paso 2: haga clic en el botón Keygen en la parte inferior de la ventana de configuración de PuTTY.

How to Use a Private Key to Login SSH

En la parte inferior de la ventana del Generador de claves, asegúrese de que el tipo de clave a generar esté configurado en SSH-2 RSA. El SSH-1 anterior era la versión original del estándar; sin embargo, ahora se considera obsoleto. SSH-2 es compatible con la mayoría de los servidores y clientes actuales.

Paso 3: haga clic en el botón Generar para comenzar

Durante unos segundos, sigue moviendo el cursor sobre el espacio en blanco de cualquier manera para ayudar a producir aleatoriedad hasta que se complete el progreso.

How to Use a Private Key to Login SSH
How to Use a Private Key to Login SSH

PuTTY mostrará los datos relacionados del par, así como la clave pública para una copia simple una vez finalizadas las claves.

Paso 4: (Opcional) Para mayor seguridad, ingrese una frase de contraseña clave en los dos cuadros vacíos antes de continuar. Si alguien puede duplicar su clave, el pase la protegerá del uso ilegal. Por otro lado, es posible que algunas herramientas de automatización no puedan descifrar claves privadas protegidas con contraseña.

Paso 5: guarde la clave privada haciendo clic en el botón Guardar clave privada y guárdela en un lugar seguro. 

How to Use a Private Key to Login SSH

Siempre que su PC esté protegida con contraseña, puede colocar cualquier cosa en su directorio de usuario. Es posible que desees copiar la clave pública a tu portapapeles antes de cerrar el generador de claves, pero siempre podrás obtenerla después. Deberá importar su nueva clave al agente de claves PuTTY ahora que está guardada en su computadora.

Para abrir el administrador de claves en la ventana Configuración de PuTTY, haga clic en el botón Agente.

En la Lista de claves, haga clic en Agregar clave, luego navegue hasta la ubicación donde almacenó la clave privada, selecciónela y haga clic en Abrir. Si se le solicita, ingrese su contraseña clave.

How to Use a Private Key to Login SSH

Esto importará la clave a su cliente PuTTY, pero la clave pública aún debe copiarse en su servidor.

Vaya al directorio de claves SSH abriendo una conexión SSH a su servidor en la nube.
cd ~/.ssh/

OpenSSH busca claves públicas, que se denominan authorized_keysAsí que asegúrate de que este archivo esté creado.

Paso 6:  Simplemente haga clic derecho en la ventana del cliente SSH y pegue la clave pública en el archivo. Para permitir que OpenSSH lea la clave, asegúrese de que esté en una sola línea. Vale la pena señalar que también se debe especificar el tipo de clave, ssh-rsa, como se ve en el siguiente ejemplo.

ssh-rsa
 AAAAB3NzaC1yc2EAAAABJQAAAQEA61Ak9YHhfrNe2gnHcfxTIOiHvH6A2D1dsT8h
VlFLIxsXu23AaQit8B3rGshie/sH3E5WJ7iqA6VQXsbdLwlSXJfmFQq8KGWtx7cx
C7Ft3kXerrzIk6q2Bih+GmrFLD1tCV9UrvgIditwp/BAJqtgyuGZY9wBB9NBubhQ
/KgSNpiEt0mGOCjEIy7JrATZcBXx4Ve2Jaqr3l/7FrdbLJfWYoR5LssBRzuCFGWR
0Xjuf2HgPNsLTn6lDvrYKVdo0aTvNvdTIixjB/AEgSt2y4/7sJPMqLSXq/WhA78a
g68tvmydA61ZqaGuLOPJ58icchv3prL7kCt+7lhqZyXFbllRPQ== usuario@servidor

Guarde el archivo y cierre el editor una vez que haya copiado la clave pública en la lista de claves permitidas. Al volver a iniciar sesión en su servidor, ahora puede probar la autenticación de clave pública.

En lugar de que se le solicite su contraseña, debería poder iniciar sesión inmediatamente usando la clave. Si aún no funciona, asegúrese de que la clave privada de su agente SSH esté desbloqueada e inténtelo nuevamente.

Conéctese al servidor con clave privada usando Putty

Inicie Putty y siga los pasos a continuación para conectarse al servidor:

  • En Sesión, escriba el nombre de host o la dirección IP del servidor remoto.
  • Seleccione Conexión > SSH > Autenticación en el menú desplegable.
  • Para la autenticación, haga clic en Examinar... en Parámetros de autenticación/Archivo de clave privada.
  • Haga clic en Abrir para abrir la clave privada id_rsa.ppk.
  • Finalmente, haga clic en Abrir para iniciar sesión mediante la autenticación de par de claves en el servidor remoto.

Cómo utilizar la clave privada para iniciar sesión en la VM remota SSH

Paso 1 Copie su clave privada en un nuevo archivo llamado centos7template01.txt.

Paso 2 Escriba ls para verificar. 

Paso 3 Ahora, copie el archivo a una máquina virtual remota.

Paso 4 Escriba para conectarse y transferir el archivo. 

Paso 5 Ahora SSH en la VM remota (Cent7-07).

Paso 6 Escriba ls nuevamente para confirmar si el archivo está copiado. 

Paso 7 Establezca el permiso en 600 usando chmod 600 centos7template01.txt.

Paso 8 Ahora, use la clave privada para SSH usando ssh -i centos7template01.txt root@10.30.15.176.

Paso 9 Ingrese para conectarse.

Paso 10 Compruebe si recibe el mensaje conectado correctamente. Si no, inténtalo de nuevo. 

Desactivar la autenticación por contraseña

Puede desactivar por completo la autenticación de contraseña para SSH para evitar la fuerza bruta ahora que se ha establecido y probado la autenticación de clave SSH. Cuando estás conectado a tu servidor en la nube.

Ejecute el siguiente comando para abrir el archivo de configuración SSH.

sudo nano /etc/ssh/sshd_config

Deshabilite las contraseñas de texto claro configurando la autenticación de contraseña en no.

    PasswordAuthentication no

Sólo para ser cauteloso y evitar que se le bloquee el acceso a su servidor, asegúrese de que la autenticación de clave pública esté habilitada.

Autenticación de clave pública sí

Después de eso, guarde y cierre el editor. Para aplicar estas modificaciones, utilice el siguiente comando para reiniciar el servicio SSH.

sudo systemctl restart sshd

Una vez completado esto, su servidor en la nube está un paso más cerca de ser seguro. Los intentos de conectarse a su servidor con intenciones maliciosas serán rechazados ya que no se permiten contraseñas simples y es muy difícil forzar una clave RSA por fuerza bruta.

¿Por qué debería utilizar la autenticación de clave pública con SSH?

Usar una clave pública para iniciar sesión en SSH es una forma más segura de conectarse en lugar de usar una contraseña. Además hay otros beneficios como, 

Los pares de claves SSH son difíciles de piratear porque las claves SSH tienen una longitud de 1024 bits, similar a una contraseña de 12 caracteres. Esto hace que sea mucho más difícil de piratear e incluso puedes mejorar la cantidad de bits al generar una clave SSH para mejorar la seguridad. 

Las claves SSH se generan mediante un algoritmo que es difícil de predecir y piratear, lo que las hace seguras. 

La máquina que contiene el privado es la única máquina que tiene acceso a él.

El uso de una clave pública para autenticar no compromete la seguridad al compartir el contenido de su clave privada. 

Si desea más seguridad, puede agregar una contraseña a su clave privada para la autenticación de tipo multifactor. 

Cómo utilizar la clave privada para iniciar sesión SSH - Conclusión

Recuerde siempre mantener seguras sus claves privadas. Si desea estar más seguro, puede usar la misma clave en varias computadoras o generar claves nuevas para cada cliente que se conecte a su servidor en la nube.

Para un control de acceso seguro, cada usuario debe presentar su par de claves y contraseña. Incluso si una de las claves privadas está comprometida, no tendrá que reemplazarlas todas si las maneja adecuadamente.

Lea también: