Saltar al contenido

Cómo configurar claves SSH en Ubuntu 18.04

marzo 4, 2020

 

Introducción

SSH, o shell seguro, es un protocolo de encriptado utilizado para administrar y comunicarse con los servidores. Cuando se trabaja con un servidor de Ubuntu, es probable que pasará la mayor parte de su tiempo en una sesión de terminal conectado a su servidor a través de SSH.

En esta guía, nos centraremos en la creación de claves SSH para una instalación de vainilla Ubuntu 18.04. claves SSH proporcionan una manera fácil y segura de registro en el servidor y se recomiendan para todos los usuarios.

Paso 1 – Crear el par de claves RSA

El primer paso es crear un par de claves en la máquina cliente (por lo general el equipo):

ssh-keygen

  • ssh-keygen

Por defecto ssh-keygen creará un 2048 bits RSA par de claves, que es lo suficientemente seguro para la mayoría de los casos de uso (puede pasar opcionalmente en -b 4096 bandera para crear una clave más grande 4096 bits).

Después de introducir el comando, debería ver el siguiente resultado:

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

Pulse Intro para guardar el par de claves en el .ssh / subdirectorio en su directorio personal, o especificar una ruta alternativa.

Si había generado previamente un par de claves SSH, es posible que vea el siguiente mensaje:

Output/home/your_home/.ssh/id_rsa already exists.
Overwrite (y
)?

Si elige sobrescribir la clave en el disco, se le no poder autenticar usando la clave anterior más. Tenga mucho cuidado al seleccionar sí, ya que este es un proceso destructivo que puede no ser revertida.

continuación, debería ver el siguiente mensaje:

OutputEnter passphrase (empty for no passphrase):

Aquí opcionalmente puede introducir una contraseña segura, que es muy recomendable. Una frase de contraseña añade una capa adicional de seguridad para evitar que usuarios no autorizados puedan iniciar la sesión. Para obtener más información sobre seguridad, consulte nuestro tutorial sobre Clave de autenticación basada en la forma de configurar SSH en un servidor Linux.

continuación, debería ver el siguiente resultado:

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:
a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 [email protected]_host
The key's randomart image is:
+--[ RSA 2048]----+
| ..o |
| E o= . |
| o. o |
| .. |
| ..S |
| o o. |
| =o.+. |
|. =++.. |
|o=++. |
+-----------------+

Ahora tiene una pública y una clave privada que se puede utilizar para autenticar. El siguiente paso es colocar la clave pública en el servidor para que pueda utilizar la autenticación basada en SSH-clave para conectarse

Paso 2 -. Copiar la clave pública al servidor de Ubuntu

La forma más rápida para copiar la clave pública para el anfitrión Ubuntu es utilizar una utilidad llamada ssh-copy-id. Debido a su simplicidad, este método es muy recomendable si está disponible. Si usted no tiene ssh-copy-id a su disposición en la máquina cliente, puede utilizar uno de los dos métodos alternativos previstos en esta sección (copia a través de SSH basada en contraseña, o de forma manual la copia de la llave).

Copia de Clave Pública Usando ssh-copy-id

La herramienta ssh-copy-id se incluye por defecto en muchos sistemas operativos, por lo que puede que esté disponible en el sistema local. Para que este método de trabajo, ya debe tener basada en contraseña de acceso SSH a su servidor.

Para utilizar la utilidad, sólo hay que especificar el host remoto que desea conectarse y la cuenta de usuario que tiene la contraseña de acceso SSH a. Esta es la cuenta a la que se copiará su clave pública SSH.

La sintaxis es la siguiente:

ssh-copy-id [email protected]_host

  • ssh-copy-id de usuario @ remote_host

Es posible que aparezca el siguiente mensaje:

OutputThe 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
o)? yes

Esto significa que el equipo local no reconoce el host remoto. Esto ocurrirá la primera vez que se conecte a un nuevo huésped. Tipo “sí” y pulse ENTER para continuar.

A continuación, la utilidad explorará su cuenta local para la clave id_rsa.pub que hemos creado anteriormente. Cuando se encuentra la llave, se le pedirá la contraseña de la cuenta del usuario remoto:

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:

Introduzca la contraseña (su escritura no se mostrará por motivos de seguridad) y pulse ENTER. La utilidad se conectará a la cuenta en el host remoto usando la contraseña proporcionada. A continuación, se copia el contenido de su clave ~ / .ssh / id_rsa.pub en un archivo en el hogar de la cuenta remota ~ / .ssh directorio llamado authorized_keys.

Debería ver el siguiente resultado:

OutputNumber 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.

Copia de Clave Pública utilizando SSH

Si usted no tiene ssh-copy-id disponibles, pero hay que basada en contraseña de acceso SSH a una cuenta en el servidor, puede subir sus claves usando un método SSH convencional.

Podemos hacer esto usando el comando cat para leer el contenido de la clave pública SSH en nuestro ordenador local y tuberías que a través de una conexión SSH al servidor remoto.

Por otro lado, podemos asegurarnos de que existe el / .ssh directorio ~ y tiene los permisos correctos bajo la cuenta que estamos usando.

Podemos entonces la salida el contenido que más tocado la flauta en un archivo llamado authorized_keys dentro de este directorio. Vamos a utilizar el símbolo de redirección >> para añadir el contenido en lugar de sobreescribirlo. Esto nos permitirá agregar claves sin destruir las claves previamente agregados.

El comando completo es similar al siguiente: Gato

cat ~/.ssh/id_rsa.pub | ssh [email protected]_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

  • ~ / .ssh / id_rsa.pub | ssh usuario @ remote_host “mkdir -p ~ / .ssh && toque ~ / .ssh / authorized_keys && chmod -R go = ~ / .ssh && gato >> ~ / .ssh / authorized_keys”

Es posible que aparezca el siguiente mensaje :

OutputThe 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
o)? yes

Esto significa que el equipo local no reconoce el host remoto. Esto ocurrirá la primera vez que se conecte a un nuevo huésped. Tipo “sí” y pulse ENTER para continuar.

A continuación, aparecerá un mensaje para entrar en el mando a distancia contraseña de la cuenta de usuario:

[email protected]'s password:

Después de introducir su contraseña, el contenido de su clave id_rsa.pub se copiará en el final del archivo authorized_keys de la cuenta del usuario remoto. Continuar con el paso 3, si ello se ha realizado correctamente.

Copia de Clave Pública manualmente

Si usted no tiene basada en contraseña de acceso SSH a su servidor disponible, tendrá que completar el proceso anterior manualmente.

Vamos a añadir manualmente el contenido de su archivo id_rsa.pub en el fichero ~ / .ssh / authorized_keys en la máquina remota.

Para visualizar el contenido de su clave id_rsa.pub, escriba esto en su ordenador local:

cat ~/.ssh/id_rsa.pub

  • cat ~ / .ssh / id_rsa.pub

Va a ver el contenido de la clave, que debe ser algo como esto:

Outputssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== [email protected]

acceso a su host remoto usando el método que tiene disponible.

Una vez que tenga acceso a su cuenta en el servidor remoto, debe asegurarse de que existe el directorio ~ / .ssh. Este comando creará el directorio si es necesario, o no hacer nada si ya existe:

mkdir -p ~/.ssh

  • mkdir -p ~ / .ssh

Ahora, puede crear o modificar el archivo authorized_keys dentro de este directorio. Puede añadir el contenido de su archivo id_rsa.pub al final del archivo authorized_keys, creando si es necesario, usando este comando:

echo public_key_string >> ~/.ssh/authorized_keys

  • eco public_key_string >> ~ / .ssh / authorized_keys

En el comando anterior, sustituir el public_key_string con la salida del ~ / .ssh / id_rsa.pub comando cat que se ejecuta en el sistema local. Se debe comenzar con AAAA ssh-rsa ….

Por último, vamos a garantizar que el archivo ~ / .ssh directorio y authorized_keys tiene los permisos apropiados:

chmod -R go= ~/.ssh

  • chmod -R go = ~ / .ssh

Esto elimina de forma recursiva todos “grupo” y “otros” permisos para el / .ssh / ~.

Si está utilizando la cuenta de root para establecer claves para una cuenta de usuario, también es importante que el / .ssh directorio ~ pertenece al usuario y no a la raíz:

chown -R sammy:sammy ~/.ssh

  • chown -R Sammy: Sammy ~ / .ssh

En este tutorial nuestro usuario se llama Sammy pero se debe sustituir el nombre de usuario correspondiente en el comando anterior.

Ahora podemos intentar la autenticación sin contraseña con nuestro servidor de Ubuntu.

Paso 3 – Realice la autenticación del servidor de Ubuntu El uso de claves SSH

Si ha completado con éxito uno de los procedimientos anteriores, se debe ser capaz de iniciar sesión en el host remoto sin la contraseña de la cuenta remota.

El proceso básico es el mismo:

ssh [email protected]_host

  • nombre de usuario ssh @ remote_host

Si esta es la primera vez que se conecta a este host (si se ha utilizado el último método anterior), es posible que vea algo como esto:

OutputThe 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
o)? yes

esto significa que el equipo local no reconoce el host remoto. Tipo “sí” y luego pulse ENTER para continuar.

Si no proporcionó una frase de paso para su clave privada, usted podrá acceder de inmediato. Si ha facilitado una frase de contraseña para la clave privada cuando se creó la clave, se le pedirá que introduzca ahora (nota que las pulsaciones del teclado no se mostrarán en la sesión de terminal para la seguridad). Después de autenticación, una nueva sesión de shell debe abrir para usted con la cuenta configurada en el servidor de Ubuntu.

Si la autenticación basada en clave fue un éxito, continuar por aprender cómo asegurar aún más su sistema mediante la desactivación de la autenticación de contraseña.

Paso 4 – Desactivar autenticación de contraseña en el servidor de

Si usted fuera capaz de acceder a su cuenta a través de SSH sin contraseña, usted ha configurado correctamente la autenticación basada en SSH-clave para su cuenta. Sin embargo, su mecanismo de autenticación basada en contraseñas todavía está activo, lo que significa que el servidor sigue estando expuesta a los ataques de fuerza bruta.

Antes de completar los pasos de esta sección, asegúrese de que usted o tiene la autenticación basada en SSH-clave configurada para la cuenta root en este servidor, o preferiblemente, que tiene la autenticación basada en SSH-clave configurada para una cuenta sin privilegios en este servidor con privilegios sudo. Este paso va a bloquear los inicios de sesión basados ​​en contraseñas, por lo que asegurarse de que usted todavía será capaz de obtener acceso administrativo es crucial.

Una vez que haya confirmado que su cuenta a distancia tiene privilegios de administrador, inicie sesión en el servidor remoto con claves SSH, ya sea como root o con una cuenta con privilegios sudo. A continuación, abra el archivo de configuración del servidor SSH:

sudo nano /etc/ssh/sshd_config

  • sudo nano / etc

Dentro del archivo / ssh / sshd_config, la búsqueda de una directiva llamada PasswordAuthentication. Esto puede ser comentada. Elimine la línea y establecer el valor a “no”. Esto desactivará su capacidad para conectarse a través de SSH usando contraseñas de cuentas:

...
PasswordAuthentication no
...

Guardar y cerrar el archivo cuando haya terminado pulsando CTRL + X, entonces Y para confirmar guardar el archivo, y finalmente ENTER para nano salida. Para realmente poner en práctica estos cambios, tenemos que reiniciar el servicio sshd:

sudo systemctl restart ssh

  • sudo systemctl reinicio ssh

Como precaución, se abrirá una nueva ventana de terminal y la prueba de que el servicio SSH está funcionando correctamente antes de cerrar esta sesión:

ssh [email protected]_host

  • ssh usuario @ remote_host

Una vez que haya verificado su servicio SSH, puede de manera segura cierre todas las sesiones actuales del servidor.

El demonio SSH en el servidor de Ubuntu ahora sólo responde a las claves SSH. autenticación basada en contraseñas éxito ha sido deshabilitado.

Conclusión

Ahora debe tener la autenticación basada en SSH-clave configurada en el servidor, lo que le permite iniciar sesión sin proporcionar una contraseña de la cuenta.

Si desea obtener más información acerca de cómo trabajar con SSH, echar un vistazo a nuestra Guía de SSH Essentials.