Cómo configurar claves SSH en Ubuntu 20.04 LTS

1 mar 2021 6 min di lettura
Cómo configurar claves SSH en Ubuntu 20.04 LTS
Indice dei contenuti

Introducción

Las claves SSH son una implementación de la criptografía de clave pública. Resuelven el problema de los ataques de fuerza bruta a las contraseñas haciéndolas poco prácticas. Las claves SSH proporcionan una forma sencilla y segura de iniciar sesión en su servidor y se recomiendan para todos los usuarios.

Cree una copia de las claves RSA

Cree una copia de las claves en su computadora, desde la cual se conectará al servidor a través de SSH.

Desde la terminal da el siguiente comando:

ssh-keygen

Debería recibir un mensaje de salida similar al siguiente:


Generating public/private rsa key pair.
 Enter file in which to save the key (/tua_home/.ssh/id_rsa):

Presione Entrar para guardar el par de claves en la carpeta.ssh /, o especifique una ruta alternativa.

Si las claves ya se generaron, debería recibir un mensaje de salida similar al siguiente:


/home/tua_home/.ssh/id_rsa already exists.
 Overwrite (y/n)?

ATENCIÓN

Después de eso, debería recibir un mensaje de salida similar al siguiente:


Enter passphrase (empty for no passphrase):

Para mayor seguridad, puede ingresar una frase de contraseña segura, que es muy recomendable. Una frase de contraseña agrega una capa adicional de seguridad para evitar que usuarios no autorizados inicien sesión.

Después de eso, debería recibir un mensaje de salida similar al siguiente:


Your identification has been saved in /tua_home/.ssh/id_rsa.
 Your public key has been saved in /tua_home/.ssh/id_rsa.pub.
 The key fingerprint is:
 SHA256:3g8Vbc+Bb0Tb1Txb1Fh8dRQzehOkddxBqwVOdMnYC2g user@host
 The key's randomart image is:
 +---[RSA 2048]----+
 | o+*^^|
 | Eo+X=^|
 |..=+OB|
 | o*=o|
 | S.. oo|
 |.... |
 |. o |
 | o |
 |. |
 +----[SHA256]-----+

Copie la clave pública al servidor Ubuntu

La forma más rápida de copiar su clave pública al host de Ubuntu es usar ssh-copy-id. Si no tiene ssh-copy-id en la computadora cliente, puede usar uno de los dos métodos alternativos que se explican a continuación.

Para usar ssh-copy-id, simplemente especifique el host remoto al que desea conectarse y la cuenta de usuario a la que tiene acceso a través de la contraseña SSH:

ssh-copy-id user@ip_del_server_ubuntu

Puede recibir un mensaje de salida similar al siguiente:


The authenticity of host 'INDIRIZZO_IP (INDIRIZZO_IP)' can't be established.
 ECDSA key fingerprint is SHA256:E3NlUzqo/QZm8PF1QD9grtkPm8NIzyp0wHfMZGB/t6M.
 Are you sure you want to continue connecting (yes/no)? yes

Significa que su computadora local no reconoce el host remoto. Esto sucederá la primera vez que se conecte a un nuevo host. Escriba "sí" y presione ENTER para continuar.

A continuación, la utilidad escaneará su cuenta local en busca de la clave id_rsa.pub que creamos anteriormente. Cuando encuentre la clave, le pedirá la contraseña de la cuenta del usuario remoto.

Debería recibir un mensaje de salida similar al siguiente:


/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@INDIRIZZO_IP's password:

Escriba la contraseña y presione ENTER. El contenido de su clave ~ /.ssh /id_rsa.pub se copiará en un archivo en el directorio ~ /.ssh de los authorized_keys cuenta remota con nombre.

Debería recibir un mensaje de salida similar al siguiente:


Number of key(s) added: 1

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

Copie la clave pública usando SSH

Si no tiene ssh-copy-id, pero tiene acceso SSH basado en contraseña a una cuenta en el servidor, puede cargar claves usando un método SSH convencional.

Ejecute este comando desde su computadora local, cambiando el usuario y la dirección IP del servidor Ubuntu al que conectarse:

cat ~/.ssh/id_rsa.pub | ssh user@indirizzo_ip "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Puede recibir un mensaje de salida similar al siguiente:


The authenticity of host 'INDIRIZZO_IP (INDIRIZZO_IP)' can't be established.
 ECDSA key fingerprint is SHA256:E3NlUzqo/QZm8PF1QD9grtkPm8NIzyp0wHfMZGB/t6M.
 Are you sure you want to continue connecting (yes/no)? yes

Significa que su computadora local no reconoce el host remoto. Esto sucederá la primera vez que se conecte a un nuevo host. Escriba "sí" y presione ENTER para continuar.

A continuación, la utilidad escaneará su cuenta local en busca de la clave id_rsa.pub que creamos anteriormente. Cuando encuentre la clave, le pedirá la contraseña de la cuenta del usuario remoto.

Luego se le pedirá que ingrese la contraseña de la cuenta:

user@INDIRIZZO_IP's password:

Escriba la contraseña y presione ENTER. El contenido de su clave ~ /.ssh /id_rsa.pub se copiará en un archivo en el directorio ~ /.ssh de los authorized_keys cuenta remota con nombre.

Copiar la clave pública manualmente

Si no tiene acceso SSH al servidor basado en contraseña, siga estas instrucciones.

Agregue manualmente el contenido de su archivo id_rsa.pub al archivo ~ /.ssh /allowed_keys en su servidor remoto.

Vea y copie el contenido de su clave pública id_rsa.pub:

cat ~/.ssh/id_rsa.pub

Debería recibir un mensaje de salida similar al siguiente:


ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDdTV41d4YIf0EqISOryVM4zF2Ucv8ekGtOg6t3RjSJqKfW/XS6n7bzI5yZd3QlvI0M8P+xdUnKxIQpDSkBJaySOmVq1QmmE74iRFvWygsqB3jlEyagnH8h3SKjh5FLTxxUZQxwU351BRCUSxoqLdA30KgrXKOWM/C9lm7dx3DsucV/iGdsv8m2ojwdwwRUFTfWo4PsjJOZ8XX+JciqdTVIbKnPklsosu+8+WvVKiuZYqaq4EMmQXX/wHXAo77FqWg+czDFwexYkFSIC6Lt5p3eS0RVNp4HyU36MmXvHsfIXhkaAJp5Myxd6FdFLcM/5zm52SqAZDnMwIXDr71aArId user@nome

Inicie sesión en su host remoto utilizando el método que tiene disponible.

Crear directorio ~ /.ssh, este comando creará el directorio si es necesario, o no hará nada si ya existe:

mkdir -p ~/.ssh

Ahora puede crear o editar el archivo Authorized_keys dentro de este directorio. Puede agregar el contenido de su archivo id_rsa.pub al final del archivo autorizado_keys.

Ejecute el siguiente comando, reemplazando public_key con el mensaje de salida recibido del comando anterior cat ~ /.ssh /id_rsa.pub:

echo chiave_pubblica >> ~/.ssh/authorized_keys

EJEMPLO (no use esta clave pública):

echo AAAAB3NzaC1yc2EAAAADAQABAAABAQDdTV41d4YIf0EqISOryVM4zF2Ucv8ekGtOg6t3RjSJqKfW/XS6n7bzI5yZd3QlvI0M8P+xdUnKxIQpDSkBJaySOmVq1QmmE74iRFvWygsqB3jlEyagnH8h3SKjh5FLTxxUZQxwU351BRCUSxoqLdA30KgrXKOWM/C9lm7dx3DsucV/iGdsv8m2ojwdwwRUFTfWo4PsjJOZ8XX+JciqdTVIbKnPklsosu+8+WvVKiuZYqaq4EMmQXX/wHXAo77FqWg+czDFwexYkFSIC6Lt5p3eS0RVNp4HyU36MmXvHsfIXhkaAJp5Myxd6FdFLcM/5zm52SqAZDnMwIXDr71aArId user@nome >> ~/.ssh/authorized_keys

Establecer los permisos correctos para el directorio ~ /.ssh y para authorized_keys:

chmod -R go= ~/.ssh

Si está utilizando la cuenta de root para configurar la clave para una cuenta de usuario no root, ejecute este comando:

chown -R tuo_utente:tuo_utente ~/.ssh

Autenticarse en Ubuntu Server usando claves SSH

Ahora puede iniciar sesión en el host remoto sin usar la contraseña:

ssh user@INDIRIZZO_IP

Si es la primera vez que se conecta a este host, es posible que reciba un mensaje de salida similar al siguiente:


The authenticity of host 'INDIRIZZO_IP (INDIRIZZO_IP)' can't be established.
 ECDSA key fingerprint is SHA256:E3NlUzqo/QZm8PF1QD9grtkPm8NIzyp0wHfMZGB/t6M.
 Are you sure you want to continue connecting (yes/no)? yes

Esto significa que su computadora local no reconoce el host remoto. Escriba " " y luego presione ENTER para continuar.

Si no ha proporcionado una frase de contraseña para su clave privada, iniciará sesión inmediatamente. Si proporcionó una frase de contraseña para la clave privada cuando creó la clave, se le pedirá que la ingrese e inicie sesión en el shell de su servidor remoto.

Deshabilitar la autenticación de contraseña en el servidor

Si pudo iniciar sesión en su cuenta usando SSH sin una contraseña, ha configurado correctamente la autenticación basada en claves SSH en su cuenta. Sin embargo, el mecanismo de autenticación basado en contraseña todavía está activo, lo que significa que el servidor todavía está expuesto a ataques de fuerza bruta.

Antes de completar los pasos de esta sección, asegúrese de tener la autenticación basada en claves SSH configurada para la cuenta raíz en este servidor o, preferiblemente, tener la autenticación basada en claves SSH configurada para una cuenta no root en este servidor con privilegios sudo. Este paso bloqueará los inicios de sesión basados en contraseña.

Una vez que haya verificado que la cuenta remota tiene privilegios administrativos, inicie sesión en el servidor remoto con las claves SSH, como root o con una cuenta con privilegios sudo. Luego, abra el archivo de configuración del demonio SSH:

sudo nano /etc/ssh/sshd_config

Dentro del archivo, busque la entrada PasswordAuthentication. Esto se podría comentar. Quite el comentario de la línea y establezca el valor en " no ". Esto deshabilitará la capacidad de iniciar sesión a través de SSH utilizando las contraseñas de la cuenta:

...
 PasswordAuthentication no...

Guarde y cierre el archivo.

Reinicie el servicio sshd:

sudo systemctl restart ssh

Como precaución, abra una nueva ventana de terminal y verifique que el servicio SSH esté funcionando correctamente antes de cerrar esta sesión:

ssh user@INDIRIZZO_IP

Una vez que se verifica el servicio SSH, puede cerrar de forma segura todas las sesiones actuales del servidor.

El demonio SSH en su servidor Ubuntu ahora solo responde a las claves SSH. La autenticación basada en contraseña se deshabilitó con éxito.

Conclusión

La configuración de las claves SSH en Ubuntu 20.04 LTS Focal Fossa ha finalizado.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.