Cómo configurar la autenticación de clave privada SSH en un servidor Ubuntu 16.04 con un cliente Linux

En este tutorial, mostramos cómo usar la autenticación de clave privada desde cualquier máquina Linux local, en este caso CentOS 7, para establecer una conexión SSH a un servidor Ubuntu 16.04 remoto.

Nota especial: SSH está instalado de forma predeterminada en Ubuntu. Sin embargo, si por alguna razón no está instalado, puede instalarlo usando este comando:

$ sudo apt-get install openssh-server

$ ssh-keygen

Asegúrese de que el par de claves ssh id_rsa e id_rsa.pub se haya creado en el directorio de inicio del usuario /home/linuxuser/.ssh.

Copie la clave pública SSH al servidor remoto Ubuntu 16.04

Primera opción: use ssh-copy-id

Ejecute el comando.

$ ssh-copy-id linuxuser@ubuntu16-hostadvice

Esta opción copia y agrega automáticamente la clave pública (id_rsa.pub) al archivo .ssh / authorized_keys del directorio de inicio del usuario remoto. Puede confirmar esto iniciando sesión en el servidor Ubuntu 16.04 remoto y editando el archivo .ssh / allowed_keys en el directorio de inicio del usuario con un editor como. abrir empuje o Nano.

Segunda opción: copiar la clave pública manualmente

Primero cree el directorio con el nombre “.ssh“En la carpeta de inicio de la cuenta de usuario remoto”Usuario de Linux“.

$ mkdir -p ~/.ssh

O

$ mkdir -p /home/linuxuser/.ssh

Luego crea un archivo llamado “llaves_autorizadasEjecutando el comando.

$ nano ~/.ssh/authorized_keys

Luego pegue la clave pública del portapapeles en el Nano-Editor y guárdelo con “Ctrl-O“.

Establezca los permisos correctos en el directorio y el archivo.

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

Luego reinicie el servicio sshd.

$ sudo systemctl restart sshd

Ahora pruebe si el par de claves ssh realmente funciona.

Pruebe la funcionalidad del par de claves SSH

Desde la computadora Centos 7 local, inicie sesión en el Ubuntu 16.04 remoto.

$ ssh -i ~/.ssh/id_rsa linuxuser@ubuntu16-hostadvice

O simplemente

$ ssh linuxuser@ubuntu16-hostadvice

Después de una autenticación e inicio de sesión exitosos, debería estar en la terminal de su usuario remoto.

Dado que se ha verificado que el par de claves ssh funciona como se requiere, una MEJOR práctica es deshabilitar la autenticación de contraseña en el servidor editando el archivo de configuración ssh, sshd_config. Esto es para descartar el riesgo de ataques de fuerza bruta a través del descifrado de contraseñas.

Edite el sshd_config

Editemos el archivo de configuración ejecutando el comando:

$ sudo vim /etc/ssh/sshd_config

Consulte la Figura 13. Establezca el valor de PasswordAuthentication en “no”

PasswordAuthentication no

Cambiar la configuración en sshd_config

Descomente y establezca otras configuraciones importantes en el archivo de configuración de la siguiente manera y guarde el archivo. (Ver figura 13)

PubkeyAuthentication yes
AuthorizedKeyFile    .ssh/authorized_keys
ChallengeResponseAuthentication no

Reinicie el servicio sshd para activar los cambios en el archivo de configuración ejecutando el comando.

$ sudo systemctl restart sshd

A partir de ahora es posible iniciar sesión en el servidor SÓLO con claves SSH y NO CON CONTRASEÑA.

Eso no se detiene ahí. El UFW (firewall sin complicaciones) debe configurarse para filtrar ssh a través del firewall.

Configurar ufw (firewall sencillo) para ssh

Compruebe si UFW está instalado:

$ dpkg -l | grep ufw

Si ufw aparece en la lista, ya está instalado.

Nota especial: de forma predeterminada, ufw generalmente se instala en Ubuntu, pero si por alguna razón no está allí, puede usarlo para instalarlo.

$ sudo apt-get install ufw

Compruebe si OpenSSH es una de las aplicaciones con perfil registrado en UFW.

$ sudo ufw app list

A partir del problema, OpenSSH es la única aplicación con un perfil registrado en UFW

$ sudo ufw app list

Asegúrese de que el firewall permita conexiones SSH

$ sudo ufw allow OpenSSH

Vuelva a cargar el firewall y habilítelo en el arranque

$ sudo ufw enable

Confirme que se permite la conexión SSH a través de UFW

$ sudo ufw status

Consulte los 3 principales servicios de alojamiento de Linux