Inicio

Claves públicas, claves privadas y SSH: ¿Para qué sirven?

Cuando revisamos nuestro correo o la cuenta de alguna red social generalmente utilizamos una **contraseña**. Sin embargo, a menos que generes contraseñas seguras y sin repetirlas jamás entre servicios, no es seguro. En el caso de un sistema UNIX como un servidor Linux o un BSD (como Texto Plano) es aún más peligroso por la cantidad de cosas que es posible hacer con un servidor. Por eso para conectarnos a un sistema hoy en día utilizamos una conexión cifrada (a través del protocolo SSH) y una clave criptográfica para identificarnos.

¿Cómo funciona una clave criptográfica? Es muy simple: Si me quiero conectar a un servidor como Texto-Plano necesito tener una clave SSH. Esta clave tiene 2 partes:

Nota: texto-plano.xyz sólo admite el algoritmo ed25519. Para especificar el algoritmo debes añadir el parámetro -t a ssh-keygen con el nombre del algoritmo: ssh-keygen -t ed25519.

Para autenticarte, SSH te pedirá tener la misma clave pública que está almacenada en el servidor, pero para que funcione debes tener la clave privada junto a ella, de lo contrario, no puedes demostrar que esa clave es tuya.

¿Cómo creo una clave para SSH?

OpenSSH

Con OpenSSH (generalmente en sistemas UNIX como GNU/Linux, BSD u OSX pero también puede usarse en Windows si lo instalas) utilizas el siguiente comando:

ssh-keygen

Y siguiendo las instrucciones deberías tener dos archivos que se llaman:

Luego sólo te queda copiar el archivo con la clave pública al servidor, en la carpeta ~/.ssh/.

Si accedes al servidor con una contraseña puedes utilizar el comando ssh-copy-id para transferirlo tú mismo:

ssh-copy-id usuario@servidor.dominio

De no tener acceso al servidor con contraseña debes o contactar al administrador o entrar desde otro equipo en que sí tengas acceso y pegar el contenido de id_rsa.pub en ~/.ssh/authorized_keys.

Si tienes acceso a tu carpeta de usuario puedes hacer esto con la utilidad cat:

cat id_ed25519.pub >> ~/.ssh/authorized_keys

(Si es tu primera clave pública en texto-plano.xyz tendrás que enviarlo por correo a admin arroba texto-plano.xyz ya que este servidor no admite autenticación por contraseña)

Con PuttyGen (Windows):

Generalmente en Windows nos conectamos a sistemas externos por consola a través de Putty que emplea un formato distinto, el archivo .PPK.

Para esto necesitamos la utilidad PuttyGen que va a crear una clave para nosotros. Tanto Putty como PuttyGen los podemos conseguir en la web de Putty.

Primero ejecutamos PuttyGen. Haremos clic en "Generate" y luego que el proceso termine tendremos que hacer clic en "Save private key". Putty guarda su clave pública en un formato distinto así que es preferible que la copiemos desde el cuadro de texto de arriba que dice "Public key for pasting into OpenSSH authorized_keys file" y ese archivo lo pegamos en ~/.ssh/authorized_keys (o se lo enviamos al administrador del servidor si es el caso)

ventana de puttygen

Luego sólo queda agregar nuestra clave privada a Putty para conectarnos. Nos vamos a Connection -> SSH -> Auth y donde dice "Private key file for authentication" presionamos Browse y buscamos el archivo .PPK

putty clave privada

Estamos listos para conectarnos. Volvemos a Session y digitamos la dirección del servidor, opcionalmente guardamos la conexión (si la vamos a usar en Saved Sessions) y presionamos Open para conectarnos.

~ffuentes 07-11-2020

Actualizado el 18-09-2022