Cómo instalar claves SSH en Ubuntu 20.04
Introducción
SSH, o Secure Shell, es un protocolo cifrado que se utiliza para administrar y comunicarse con servidores. Al trabajar con un servidor Ubuntu, es probable que pase la mayor parte del tiempo en una sesión de terminal conectada a su servidor mediante SSH. Manténgase al tanto de cómo instalar claves SSH en Ubuntu 20.04.
En este AyudaEn este artículo, nos centraremos en configurar claves SSH para su instalación de Ubuntu 20.04. Las claves SSH proporcionan una forma segura de iniciar sesión en su servidor y se recomiendan para todos los usuarios.
Creación DigitalOcean Droplet te permite agregar instantáneamente las claves SSH de tu computadora para que puedas conectarte de forma privada y segura.
Paso 1 – Crear un par de claves
El primer paso es crear un par de claves en el dispositivo cliente (normalmente su ordenador):
$ ssh-keygenDe forma predeterminada, las versiones recientes de ssh-keygen generan un par de claves RSA de 3072 bits, que es lo suficientemente seguro para la mayoría de los propósitos (opcionalmente puede pasar el indicador -b 4096 para generar una clave más grande de 4096 bits).
Después de ingresar el comando, debería ver el siguiente resultado:
Output
Generating public/private rsa key pair.
Enter file in which to save the key (/your_home/.ssh/id_rsa):Presione Enter para guardar el par de claves en el subdirectorio /ssh. de su directorio de inicio o especifique una ruta alternativa.
Si ya ha creado un par de claves SSH, es posible que vea el siguiente mensaje:
Output
/home/your_home/.ssh/id_rsa already exists.
Overwrite (y/n)?Si decide sobrescribir la clave en el disco, ya no podrá autenticarse con la clave anterior. Tenga mucho cuidado al seleccionar (Sí), ya que este es un proceso destructivo e irreversible.
Deberías ver la siguiente notificación:
Output
Enter passphrase (empty for no passphrase):Aquí puede introducir opcionalmente una contraseña segura, lo cual es muy recomendable. Una contraseña añade una capa adicional de seguridad para evitar que usuarios no autorizados inicien sesión. Para obtener más información sobre seguridad, consulte nuestro tutorial sobre cómo configurar la autenticación basada en claves SSH en un servidor Linux.
Debería ver entonces un resultado similar al siguiente:
OutputYour identification has been saved in /your_home/.ssh/id_rsa Your public key has been saved in /your_home/.ssh/id_rsa.pub The key fingerprint is: SHA256:/hk7MJ5n5aiqdfTVUZr+2Qt+qCiS7BIm5Iv0dxrc3ks user@host The key's randomart image is: +---[RSA 3072]----+ | .| | + | | + | | . o . | |o S . o | | + o. .oo. .. .o| |o = oooooEo+ ...o| |.. o *o+=.*+o....| | =+=ooB=o.... | +----[SHA256]-----+
Ahora tienes una clave pública y una privada que puedes usar para la autenticación. El siguiente paso es guardar la clave pública en tu servidor para poder usar la autenticación basada en clave SSH para iniciar sesión.
Paso 2: Copiar la clave pública al servidor Ubuntu
La forma más rápida de copiar la clave pública en un host Ubuntu es usar la herramienta ssh-copy-id. Debido a su simplicidad, este método es muy recomendable si está disponible. Si no tiene ssh-copy-id disponible en su equipo cliente, puede usar uno de los dos métodos alternativos que se ofrecen en esta sección (copiar mediante SSH con contraseña o copiar la clave manualmente).
Copiar la clave pública usando ssh-copy-id
La herramienta ssh-copy-id está incluida por defecto en muchos sistemas operativos, así que es posible que la tengas disponible en tu sistema local. Para que este método funcione, debes tener acceso SSH con contraseña a tu servidor.
Para usar esta herramienta, especifique el host remoto al que desea conectarse y la cuenta de usuario a la que tiene acceso SSH mediante contraseña. Esta es la cuenta a la que se copiará su clave pública SSH.
Como esto:
$ ssh-copy-id username@remote_hostEs posible que vea el siguiente mensaje:
Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yesEsto significa que su ordenador local no reconoce el host remoto. Es la primera vez que se conecta a un nuevo host. Escriba "sí" y pulse Intro para continuar.
A continuación, la herramienta buscará en su cuenta local la clave id_rsa.pub que creamos anteriormente. Al encontrarla, le solicitará la contraseña de la cuenta remota:
Output
/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
[email protected]'s password:Ingrese la contraseña (no se mostrará por seguridad) y presione ENTER. La herramienta se conectará a la cuenta en el host remoto usando la contraseña proporcionada. A continuación, copiará el contenido de su clave ssh/id_rsa.pub./~ a un archivo en el directorio principal ssh./~ de la cuenta remota llamado "authorized_keys".
Debería ver el siguiente resultado:
Output
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.En este punto, su clave id_rsa.pub se ha cargado en la cuenta remota. Puede continuar con el paso 3.
Copiar la clave pública mediante SSH
Si no tiene ssh-copy-id disponible, pero tiene acceso SSH basado en contraseña a una cuenta en su servidor, puede cargar sus claves usando el método SSH normal.
Podemos hacer esto usando el comando cat para leer el contenido de la clave pública SSH en nuestra computadora local y canalizarlo a través de una conexión SSH al servidor remoto.
Alternativamente, podemos asegurarnos de que el directorio ssh./~ exista y tenga los permisos correctos para la cuenta que estamos usando.
Luego, podemos exportar el contenido ingresado a un archivo llamado "authorized_keys" en este directorio. Usaremos el símbolo de redirección << para añadir el contenido en lugar de sobrescribirlo. Esto nos permite agregar claves sin destruir las claves agregadas previamente.
El comando completo es el siguiente:
$ cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"
Es posible que vea el siguiente mensaje:
Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yesEsto significa que su equipo local no reconoce el host remoto. Es la primera vez que se conecta a un nuevo host. Escriba Sí y presione ENTER para continuar.
Después de eso, se le solicitará que ingrese la contraseña de la cuenta de usuario remota:
Output
[email protected]'s password:Tras introducir la contraseña, el contenido de su clave id_rsa.pub se copiará al final del archivo authorized_keys de la cuenta remota. Si lo hace correctamente, continúe con el paso 3.
Copiar la clave pública manualmente
Si no tiene acceso SSH con contraseña a su servidor, deberá completar el proceso anterior manualmente.
Agregamos manualmente el contenido de su archivo id_rsa.pub al archivo ssh/authorized_keys./~ en su máquina remota.
Para mostrar el contenido de la clave id_rsa.pub, escriba lo siguiente en su computadora local:
# cat ~/.ssh/id_rsa.pubVerá el contenido de la clave, que debería verse así:
Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@testAcceda a su host remoto utilizando cualquier método disponible.
Una vez que tenga acceso a su cuenta en el servidor remoto, asegúrese de que el directorio ssh./~ exista. Este comando creará el directorio si es necesario o no hará nada si ya existe:
$ mkdir -p ~/.sshAhora puede crear o modificar el archivo "authorized_keys" en este directorio. Puede agregar el contenido de su archivo "id_rsa.pub" al final del archivo "authorized_keys" y crearlo si es necesario con este comando:
$ echo public_key_string >> ~/.ssh/authorized_keysEn el comando anterior, reemplaza public_key_string con la salida del comando cat ~/.ssh/id_rsa.pub que ejecutaste en tu sistema local. Debería comenzar con ssh-rsa AAAA….
Por último, nos aseguraremos de que el directorio ssh./~ y el archivo authorized_keys tengan los permisos adecuados establecidos:
$ chmod -R go= ~/.sshEsto elimina de forma recursiva todos los permisos de "grupo" y "otros" para el directorio /ssh./~.
Si está utilizando la cuenta raíz para configurar claves para una cuenta de usuario, también es importante que el directorio ssh./~ sea propiedad del usuario y no de root:
chown -R sammy:sammy ~/.sshEn este tutorial, nuestro usuario se llama sammy, pero debes sustituir el nombre de usuario apropiado en el comando anterior.
Ahora podemos realizar la autenticación sin contraseña con Ubuntu Server.
Paso 3: Autenticación en el servidor Ubuntu mediante claves SSH
Si ha completado con éxito uno de los pasos anteriores, debería poder iniciar sesión en el host remoto sin proporcionar la contraseña de la cuenta remota.
El proceso básico es el mismo:
$ ssh username@remote_hostSi es la primera vez que se conecta a estos hosts (si utiliza el último método mencionado anteriormente), es posible que vea algo como esto:
Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Esto significa que su equipo local no reconoce el host remoto. Escriba "sí" y presione ENTER para continuar.
Si no proporcionó una contraseña para su clave privada, iniciará sesión inmediatamente. Si la proporcionó al crearla, se le solicitará que la ingrese (tenga en cuenta que, por seguridad, sus pulsaciones no se mostrarán en la sesión de terminal). Tras la autenticación, se le abrirá una nueva sesión de shell con la cuenta configurada en el servidor Ubuntu.
Si la autenticación basada en clave fue exitosa, continúe aprendiendo cómo proteger aún más su sistema deshabilitando la autenticación con contraseña.
Paso 4: Desactivar la autenticación de contraseña en su servidor
Si pudo iniciar sesión en su cuenta mediante SSH sin contraseña, ha configurado correctamente la autenticación basada en clave SSH. Sin embargo, el mecanismo de autenticación basado en contraseña sigue habilitado, lo que significa que su servidor sigue siendo vulnerable a ataques de fuerza bruta.
Antes de completar los pasos de esta sección, asegúrese de haber configurado la autenticación basada en clave SSH para la cuenta root en este servidor o, preferiblemente, para una cuenta no root con privilegios sudo. Este paso bloquea los inicios de sesión con contraseña, por lo que es fundamental asegurarse de que aún tenga acceso administrativo.
Una vez verificado que su cuenta remota tiene privilegios administrativos, inicie sesión en el servidor remoto con sus claves SSH, ya sea como root o con una cuenta con privilegios sudo. A continuación, abra el archivo de configuración del demonio SSH:
$ sudo nano /etc/ssh/sshd_configDentro del archivo, busque la directiva PasswordAuthentication. Esta línea puede estar comentada con un # al principio. Descomente la línea eliminando el # y estableciendo el valor en "no". Esto deshabilitará el inicio de sesión por SSH con las contraseñas de cuenta.
/etc/ssh/sshd_config
. . .
PasswordAuthentication no
. . .Una vez hecho esto, guarde y cierre el archivo presionando CTRL+X, luego Y para confirmar y, finalmente, ENTER para salir de nano. Para activar estos cambios, debemos reiniciar el servicio sshd:
$ sudo systemctl restart sshComo precaución, abra una nueva ventana de terminal y pruebe que el servicio SSH funciona correctamente antes de cerrar su sesión actual:
# ssh username@remote_hostUna vez que haya verificado que su servicio SSH funciona correctamente, puede cerrar de forma segura todas las sesiones actuales del servidor.
El demonio SSH de su servidor Ubuntu ahora solo responde a la autenticación basada en claves SSH. Se han deshabilitado los inicios de sesión con contraseña.
Resultado
Ahora necesita configurar la autenticación basada en clave SSH en su servidor, lo que le permitirá iniciar sesión sin proporcionar una contraseña de cuenta.









