Secure Shell (SSH) es un protocolo de red criptográfico diseñado para una conexión segura entre un cliente y un servidor.

Los dos mecanismos de autenticación SSH más populares son la autenticación basada en contraseña y la autenticación basada en clave pública. El uso de claves SSH es generalmente más seguro y conveniente que la autenticación de contraseña tradicional.

Este artículo describe cómo generar claves SSH en sistemas CentOS 8. También le mostraremos cómo configurar una autenticación basada en clave SSH y conectarse a servidores Linux remotos sin ingresar una contraseña.

Creación de claves SSH en CentOS

Lo más probable es que ya tenga un par de claves SSH en su máquina cliente CentOS. Si está generando un nuevo par de claves, el antiguo se sobrescribirá.

Ejecute el siguiente ls comando para verificar si existen los archivos clave:

ls -l ~/.ssh/id_*.pub

Si el resultado del comando devuelve algo como No such file or directory, o no matches foundsignifica que el usuario no tiene claves SSH, puede continuar con el siguiente paso y generar un par de claves SSH.

De lo contrario, si tiene un par de claves SSH, puede usarlas o hacer una copia de seguridad de las claves antiguas y generar otras nuevas.

Para generar un nuevo par de claves SSH de 4096 bits con su dirección de correo electrónico como comentario, ejecute:

ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"

Se le pedirá que especifique el nombre del archivo:

Enter file in which to save the key (/home/yourusername/.ssh/id_rsa):

Presione Enterpara aceptar la ubicación y el nombre de archivo predeterminados.

A continuación, se le pedirá que escriba una frase de contraseña segura. Si desea utilizar una frase de contraseña, depende de usted. Una frase de contraseña agregará una capa adicional de seguridad. Si no desea utilizar la frase de contraseña, simplemente presione Enter.

Enter passphrase (empty for no passphrase):

Toda la interacción se ve así:

Para verificar que se genere su nuevo par de claves SSH, escriba:

ls ~/.ssh/id_*
/home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub

Eso es todo. Ha generado con éxito un par de claves SSH en su máquina cliente CentOS.

Copie la clave pública al servidor

Ahora que se genera el par de claves SSH, el siguiente paso es copiar la clave pública en el servidor que desea administrar.

La forma más fácil y recomendada de copiar la clave pública en el servidor remoto es usar la ssh-copy-idutilidad. En el tipo de terminal de su máquina local:

ssh-copy-id remote_username@server_ip_address

El comando le pedirá que ingrese la remote_usernamecontraseña:

remote_username@server_ip_address's password:

Una vez que se autentica al usuario, el contenido del archivo de clave pública ( ~/.ssh/id_rsa.pub) se agregará al ~/.ssh/authorized_keysarchivo de usuario remoto y se cerrará la conexión.

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'username@server_ip_address'"
and check to make sure that only the key(s) you wanted were added.

Si ssh-copy-idno está disponible en su computadora local, use el siguiente comando para copiar la clave pública:

cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Inicie sesión en su servidor usando claves SSH

Después de completar los pasos anteriores, debería poder iniciar sesión en el servidor remoto sin que se le solicite una contraseña.

Para verificarlo, intente iniciar sesión en su servidor a través de SSH :

ssh remote_username@server_ip_address

Si no ha establecido una frase de contraseña para la clave privada, iniciará sesión de inmediato. De lo contrario, se le pedirá que ingrese la frase de contraseña.

Deshabilitar la autenticación de contraseña SSH

Para agregar una capa adicional de seguridad a su servidor remoto, puede deshabilitar la autenticación de contraseña SSH.

Antes de continuar, asegúrese de que puede iniciar sesión en su servidor sin contraseña como usuario con privilegios de sudo .

Siga los pasos a continuación para deshabilitar la autenticación de contraseña SSH:

  1. Inicie sesión en su servidor remoto:

    ssh sudo_user@server_ip_address
  2. Abra el archivo de configuración de SSH /etc/ssh/sshd_configcon su editor de texto :

    sudo nano /etc/ssh/sshd_config
  3. Busque las siguientes directivas y modifíquelas de la siguiente manera:

    /etc/ssh/sshd_config
    PasswordAuthentication no
    ChallengeResponseAuthentication no
    UsePAM no
  4. Una vez que haya terminado, guarde el archivo y reinicie el servicio SSH escribiendo:

    sudo systemctl restart ssh

En este punto, la autenticación basada en contraseña está deshabilitada.

Conclusión

Le mostramos cómo generar un nuevo par de claves SSH y configurar una autenticación basada en claves SSH. Puede usar la misma clave para administrar varios servidores remotos. También aprendió cómo deshabilitar la autenticación de contraseña SSH y agregar una capa adicional de seguridad a su servidor.

De forma predeterminada, SSH escucha en el puerto 22. Cambiar el puerto SSH predeterminado reduce el riesgo de ataques automáticos. Para simplificar su flujo de trabajo, use el archivo de configuración SSH para definir todas sus conexiones SSH.

Si tiene alguna pregunta o comentario, no dude en dejar un comentario.