Crear una llave SSH para conectarse a una máquina en remoto

En esta píldora veremos cómo crear, de manera sencilla, una llave SSH para conectarnos a servidores remotos sin necesidad de introducir la clave

Seguramente muchos de los que leéis este blog tengáis algún tipo de servidor, bien local, bien en un VPS... Y cada vez que os conectáis por SSH estáis introduciendo vuestro usuario y contraseña, una y otra vez, desde vuestro ordenador personal casi siempre, ¿no?

Pues vengo a explicaros cómo ahorraros ese tedioso paso (sobre todo si, como yo, tenéis contraseñas que bien podían editarse en e-book y formato físico) y, además, aumentar la seguridad de vuestra conexión al no tener que escribirla y que alguien os la pueda pillar (¡o la olvidéis!).

Conceptos previos

Primero, voy a aclarar un par de términos:

  • Local: Hará referencia a nuestra máquina local, en la que estamos y donde tenemos nuestro teclado y pantalla (nuestro portátil, el sobremesa, el móvil...)
  • Remoto: Será el servidor remoto al que queremos conectar usando nuestra clave SSH sin necesidad de contraseña.

Una vez aclarados esos términos, comencemos con los pasos a seguir...

Paso 1: Creación de claves pública y privada

Este paso necesitaremos hacerlo si no tenemos creada ninguna clave SSH en nuestro local o bien queremos crear una nueva para usar con otro perfil. Bastará con que ejecutemos el comando:

yo@local:~ $ ssh-keygen -t ed25519
Comando para generar la clave pública-privada

El parámetro que le proporcionamos con -t le está indicando que utilice el algoritmo ed25519, más seguro que el RSA actualmente.

Nos irá pidiendo una serie de parámetros que podemos dejar marcados por defecto si así queremos, o bien vamos rellenando conforme los pida: La ruta absoluta del fichero donde queremos guardar la clave, y una contraseña para usar la llave SSH. Si aceptamos las opciones por defecto, nos creará el perfil id_ed25519 y, si miramos en el directorio ~/.ssh veremos que tenemos 2 archivos: id_ed25519 y id_ed25519.pub, siendo éstas las claves privada y pública, respectivamente. Os recomiendo dejar la privada con los permisos 600 y la pública con el 644, de manera que la primera sólo pueda ser leída por nosotros y la pública sea más... pública, valga la redundancia.

Paso 2: Copiar la llave pública en el servidor remoto

Una vez tenemos creadas las claves, necesitamos llevarnos la pública al servidor al que queremos acceder sin necesidad de contraseña. Para eso, bastará con ejecutar:

yo@local:~ $ ssh-copy-id -i id_ed25519 -p 12345 host_remoto
Comando para copiar la clave pública en el servidor remoto

Como veis, ese comando recibe 3 cosas:

  • -i id_ed25519: Con el parámetro -i le indicamos el perfil que queremos copiar en el servidor remoto, en este caso, el creado por defecto llamado id_ed25519.
  • -p 12345: El puerto SSH del servidor remoto al que queremos copiar la clave pública
  • host_remoto: La IP o el hostname del servidor remoto.

Al ejecutarlo, se nos pedirá la contraseña del usuario con el que estamos accediendo al servidor remoto, la cual será la única vez que nos tocará escribirla.

Paso 3: Acceder al servidor remoto

Una vez copiada la clave pública, la próxima vez que ejecutemos ssh host_remoto, veremos cómo accedemos directamente, sin necesidad de introducir contraseña.

¡Y ya tendremos una manera más cómoda y segura de acceder a nuestro servidor remoto desde nuestra máquina local habitual! Eso sí, mantened protegida vuestra clave privada, pues sin ella os tocará introducir la contraseña cada vez.

Si te ha gustado la entrada, o te ha sido útil y quieres ayudarme a pagar los gastos que conlleva el servidor y mantener así el blog libre completamente de anuncios, puedes hacer una donación en Bitcoin en la siguiente dirección:

Donar