Cómo agregar claves SSH en Ubuntu 20.04

Configure un inicio de sesión seguro sin contraseña en su servidor Ubuntu remoto usando claves SSH

SSH es un protocolo de red seguro cliente-servidor que ayuda a una computadora cliente a conectarse y comunicarse con un servidor remoto. La conexión SSH asegura que los comandos que se escriben en el terminal se envían al servidor remoto a través de un canal encriptado.

Hay dos tipos de mecanismos de autenticación que se utilizan para conectarse al servidor remoto, la autenticación basada en contraseña (propensa a ataques de fuerza bruta) y la autenticación basada en claves SSH (que es muy segura).

En la autenticación basada en claves SSH, se genera un par de claves en el equipo cliente, denominado clave pública y clave privada. Una copia de esta clave pública está disponible en el servidor remoto. Cuando un cliente envía una solicitud de conexión al servidor, el servidor genera una cadena aleatoria y la cifra con la clave pública. Esta cadena solo se puede descifrar utilizando la clave privada disponible en el equipo cliente. Este método garantiza que solo los clientes que contengan la clave privada puedan acceder al servidor.

En esta guía, veremos cómo configurar las claves SSH en el servidor Ubuntu 20.04 LTS.

Vea si tiene alguna clave SSH existente en su computadora

Para verificar si ya existe un par de claves SSH en su computadora, escriba este comando en su terminal.

ls -l ~ / .ssh / id _ *. pub

Si el comando anterior regresa El fichero o directorio no existe o No se encontraron coincidencias, significa que el par de claves SSH no existe.

Si tiene un par de claves SSH existente, puede usar el mismo par de claves para acceder a dos servidores remotos, o también puede crear un par de claves diferente con un nombre diferente. Pasemos al siguiente paso y veamos cómo generar claves SSH para ambos casos.

Creación de claves SSH en una computadora cliente

Para generar un nuevo par de claves SSH en su computadora, escriba el comando como se muestra a continuación.

ssh-keygen

Por defecto, las claves SSH son de 2048 bits. Para mayor seguridad, si desea generar claves SSH con bits más altos, utilice el siguiente comando.

ssh-keygen -b 4096

Si el comando se ejecuta correctamente, aparecerá el siguiente mensaje en la pantalla.

generando un par de claves rsa pública / privada. Ingrese el archivo en el que guardar la clave (/home/harshit/.ssh/id_rsa):

Ahora, si no tiene ningún par de claves SSH existente en su computadora, simplemente presione Ingresar, pero si tiene una clave SSH existente, guarde la clave con un nombre de archivo diferente como se muestra a continuación.

Ingrese el archivo en el que guardar la clave (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_xxx

Reemplace la xxx al final del nombre del archivo con un nombre apropiado, como se muestra a continuación y presione Ingresar.

Ingrese el archivo en el que guardar la clave (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_client_1

El siguiente mensaje le pedirá que ingrese una frase de contraseña de una longitud arbitraria, garantizará la seguridad de dos niveles en su dispositivo.

Ingrese la frase de contraseña (vacío si no hay frase de contraseña): Ingrese la misma frase de contraseña nuevamente:

Al ingresar esta frase de contraseña, se asegurará de que, incluso si una persona tiene acceso a su clave privada, no podrá acceder a su servidor remoto sin esta frase de contraseña.

Una vez que se completa todo el proceso, aparece el siguiente mensaje en su pantalla.

ssh-keygen -b 4096 Una vez que se completa todo el proceso de generación de claves SSH, aparece el siguiente mensaje en su pantalla.

Las claves SSH se han generado en su sistema. Ahora es el momento de copiar la clave pública en el servidor remoto.

Copiar la clave pública al servidor Ubuntu remoto

El método más fácil y rápido para copiar la clave pública al servidor remoto es mediante el ssh-copy-id utilidad. Pero si esta utilidad no está disponible en su máquina por algún motivo, también puede utilizar otros métodos proporcionados en esta sección.

Usando la utilidad ssh-copy-id

El ssh-copy-id La utilidad está disponible de forma predeterminada en su máquina Ubuntu, que copia la clave pública de su dispositivo al directorio apropiado de su máquina Ubuntu remota.

Para copiar la clave ssh pública, simplemente escriba el comando en su terminal, como se muestra a continuación.

ssh-copy-id username @ hostname

Reemplace la nombre de usuario y nombre de host en el comando anterior con el nombre de usuario y el nombre de host de su servidor.

El siguiente mensaje aparecerá en su terminal si se está conectando a su host por primera vez, escriba y presione Ingresar.

No se puede establecer la autenticidad del host '172.105.XX.XX (172.105.XX.XX)'. La huella digital de la clave ECDSA es xx: xx: xx: xx: 77: fe: 73: xx: xx: 55: 00: ad: d6: xx: xx: xx. ¿Está seguro de que desea continuar conectándose (sí / no)? 

Ahora el ssh-copy-id la utilidad buscará el archivo con el nombre id_rsa.pub que contiene la clave SSH pública. Una vez que se complete el proceso de escaneo, se le pedirá que ingrese la contraseña de su servidor remoto, como se muestra a continuación. Escriba la contraseña y presione Ingresar.

/ usr / bin / ssh-copy-id: INFO: intentando iniciar sesión con las nuevas claves, para filtrar las que ya están instaladas / usr / bin / ssh-copy-id: INFO: 1 clave (s) ) quedan por instalar - si se le solicita ahora, debe instalar las nuevas claves [email protected]'s password:

Una vez que se agrega la clave, el siguiente mensaje aparecerá en su terminal como salida.

Número de claves agregadas: 1 Ahora intente iniciar sesión en la máquina, con: "ssh '[email protected]'" y verifique para asegurarse de que solo se agregaron las claves que deseaba.

En caso de que tenga varias claves SSH en su computadora cliente, para copiar la clave pública apropiada a su computadora remota, escriba el comando en el patrón que se muestra a continuación.

ssh-copy-id -i id_rsa_xxx.pub nombre de usuario @ host

💡 Consejo

No olvide poner .pub al final del nombre del archivo mientras escribe en la terminal.

Copia de la clave pública mediante el método de tubería

Escriba el siguiente comando en la terminal si ssh-copy-id la utilidad no está disponible. Este comando puede parecer un poco más largo, pero funciona correctamente.

cat ~ / .ssh / id_rsa.pub | ssh nombre_usuario_remoto @ dirección_ip_servidor "mkdir -p ~ / .ssh && touch ~ / .ssh / claves_autorizadas && chmod -R go = ~ / .ssh && cat >> ~ / .ssh / claves_autorizadas"

Reemplazar nombre_usuario_remoto y dirección IP del servidor con su nombre de usuario y dirección IP.

Si tiene varias claves SSH disponibles en su computadora, reemplace la id_rsa.pub con el archivo de clave SSH pública de su elección. Por ejemplo, id_rsa_client_1.pub.

Escriba la contraseña del usuario remoto cuando se le solicite y presione Ingresar.

[email protected]'s Password:

Una vez que escriba la contraseña, id_rsa.pub el archivo se copiará al llaves_autorizadas archivo del servidor remoto.

Copiar manualmente la clave pública

Utilice este método cuando no tenga acceso a su sistema remoto a través de la autenticación de contraseña.

Abre el id_rsa.pub archivo usando el gato comando en la terminal. También puede abrirlo desde un editor de texto, el propósito es simplemente copiar el contenido del archivo.

gato ~ / .ssh / id_rsa.pub

El contenido del archivo se verá como se muestra a continuación.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib VvJyZ + + dGO8zRNT64 SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6HY / 65 + qqmiuLyuIQXjDiiYTjHTx + + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z csqdvIDQfMuH su_nombre @ your_PC

Ahora, inicie sesión en su servidor remoto y pegue el contenido copiado usando el comando que se muestra a continuación. Reemplace la above_string con el contenido copiado.

echo above_string >> ~ / .ssh / claves_autorizadas

Configuración de varias claves SSH (opcional)

Este paso es para personas que tienen varias claves SSH configuradas en su computadora cliente. Omita esta sección si solo tiene una configuración de clave SSH.

Para administrar varias claves SSH, ahora crearemos una config archivo dentro del .ssh directorio usando el comando que se muestra a continuación.

cd ~ / .ssh vim config

Escribe I para ingresar al modo de comando y escribir los detalles de varios hosts, como se muestra en el siguiente ejemplo:

Host remote-ubuntu-server Nombre de host 172.105.XX.XX Usuario root IdentityFile ~ / .ssh / id_rsa_client_1 Host remote-ubuntu-server Nombre de host 172.106.XX.XX Usuario root IdentityFile ~ / .ssh / id_rsa_client_2

Del mismo modo, escriba los detalles de otros servidores remotos y sus claves. Una vez que el proceso esté completo presione Esc y : wq para guardar y salir.

Ahora, los procesos posteriores son los mismos para tener una o varias claves SSH en la computadora cliente.

Inicie sesión en su servidor remoto usando claves SSH

Una vez que se complete el proceso de copia de su clave pública, inicie sesión en su servidor remoto escribiendo el comando como se muestra a continuación.

ssh nombre_usuario_remoto @ dirección_ip_servidor

Si proporcionó la frase de contraseña mientras generaba el par de claves, se le pedirá que la ingrese. Se abrirá una nueva sesión después de que se complete el proceso de autenticación.

Ahora ha configurado correctamente la autenticación basada en claves SSH en su servidor remoto. Pero la autenticación basada en contraseña todavía está activa en su servidor, esto significa que su servidor más remoto aún es propenso a ataques de fuerza bruta.

Entonces, ahora deshabilitaremos el mecanismo de inicio de sesión basado en contraseña por completo desde nuestro servidor remoto.

Deshabilitar el mecanismo de inicio de sesión basado en contraseña

Antes de realizar cualquier cambio, asegúrese de que el usuario raíz o cualquier usuario habilitado para sudo para su cuenta remota tenga acceso a su servidor mediante el sistema de autenticación basado en claves SSH. Este paso bloqueará o deshabilitará el inicio de sesión basado en contraseña por completo, por lo que es crucial que al menos un usuario con privilegios de raíz tenga acceso al servidor a través de la clave SSH.

Inicie sesión en su servidor Ubuntu remoto y escriba el comando que se muestra a continuación.

sudo vim / etc / ssh / sshd_config
  • imprenta Esc, / y escriba "PasswordAuthentication" y presione ingresar.
  • Ahora presiona I y cambie el valor de "PasswordAuthentication yes" a "PasswordAuthentication no".
  • imprenta Esc y repita el proceso anterior para encontrar "ChallengeResponseAuthentication", "UsePAM", y cambie sus valores a No también.
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no

Una vez que todos los valores se establecen en No, imprenta Esc, escribe : wq y golpea ingresar.

Para activar todos los cambios reinicie el ssh service usando el comando a continuación.

sudo systemctl reiniciar ssh

Ahora abra una nueva ventana de terminal en su computadora y verifique que la autenticación de su clave SSH esté funcionando correctamente antes de cerrar la sesión actual.

Una vez que se complete el proceso de verificación, cierre todas las sesiones en ejecución.

Ahora hemos configurado con éxito la autenticación basada en claves SSH en nuestro servidor Ubuntu 20.04. Ahora nadie puede iniciar sesión en su servidor utilizando un mecanismo de inicio de sesión basado en contraseña.