Entendiendo y configurando las claves SSH

Tabla de contenidos

¿Que es SSH?

SSH, (Secure Shell), es un protocolo que te permite conectarte a otros equipos de forma segura a través de internet. Es como tener una puerta a tu servidor, pero esta puerta está protegida por un candado muy fuerte.

Cuando te conectas a un servidor usando SSH, estás estableciendo una conexión encriptada. Esto significa que toda la información que se envía entre tu computadora y el servidor está codificada, como si estuviera escrita en un idioma secreto que solo tú y el servidor pueden entender.

Esto hace que sea prácticamente imposible para alguien interceptar y leer tus datos. Así, puedes administrar tus servidores de forma remota de manera segura y confiable.

¿Como conectarse remotamente a un servidor con el protocolo SSH?

Cuando estableces una conexión remota con el servidor a través del protocolo SSH, debes indicar el usuario y la dirección IP del servidor, con el comando:

ssh usuario@ip-servidor

seguidamente te pedirá la contraseña del usuario y podrás acceder sin problemas, sin embargo, podemos agilizar el proceso de autenticación si empleamos un certificado de autenticación o par de llaves SSH para acceder sin tener que colocar la contraseña. A continuación te explicamos como.

¿Como se conforman las claves SSH?

Las claves SSH se conforman por dos archivos que corresponden a una llave pública y una llave privada, los cuales son una secuencia de caracteres aleatorios.

La llave pública se utiliza como candado. Esta puede ser vista por otros usuarios, pero solo quien tenga la llave privada podrá abrir el candado.

En la práctica cuando intentamos establecer una conexión SSH con nuestro servidor, este genera un mensaje encriptado en forma de desafío, luego este desafío es enviado al cliente el cual intenta descifrarlo, solo si el cliente tiene la llave privada podrá resolverlo y enviar la respuesta correcta al servidor.

Así, finalmente el servidor sabe que este es el cliente autorizado y se establece la comunicación encriptada entre ambos. Toda la comunicación posterior se cifra utilizando un algoritmo criptográfico fuerte, asegurando que solo tú y el servidor puedan leer los datos intercambiados.

Ventajas de utilizar claves SSH

El uso de claves SSH ofrece una serie de ventajas significativas que lo convierten en el método preferido para conectarse a servidores de forma segura y eficiente.

  • Cifrado de extremo a extremo: Toda la comunicación entre el cliente y el servidor está encriptada, lo que hace que sea prácticamente imposible interceptar y descifrar los datos.
  • Clave pública y privada: La combinación de una clave pública y una privada garantiza que solo el usuario legítimo pueda acceder al servidor.
  • Menor riesgo de ataques: Los ataques de fuerza bruta y de diccionario son ineficaces contra las claves SSH bien generadas.
  • Mayor comodidad: Elimina la necesidad de recordar y escribir contraseñas largas y complejas.
  • Mejor experiencia de usuario: Agiliza el proceso de conexión a servidores remotos.

¿Como generar el par de llaves SSH?

Para generar el par de llaves SSH solo necesitamos una terminal de comandos. Esto funciona tanto en Linux, como en Mac OS, como en Windows (En el caso de Windows se recomienda emplear git bash). Una vez abierta la terminal, ingresamos el siguiente comando:

ssh-keygen -t ed25519

ssh-keygen es el comando que finalmente generará el par de llaves privada y pública, mientras que el parámetro -t indica el tipo de algoritmo a utilizar que corresponde a ‘ed25519’, el cual es un algoritmo moderno, rápido y eficiente para la generación de claves SSH.

Seguido de esto, se nos va a pedir que ingresemos un nombre de archivo donde guardaremos la clave . Podemos dejarlo por defecto en blanco y presionar Enter.

Seguido de eso solicitará una frase de contraseña, podemos agregarla o dejarla en blanco, esta corresponde a un segundo factor de autenticación para agregar una capa adicional de seguridad en nuestras conexiones SSH, ya que aunque alguien tenga nuestra clave privada, solo quien conozca la frase de contraseña podrá acceder al servidor remotamente.

Por último, cuando presionemos Enter, vamos a ver que se han generado exitosamente el par de llaves SSH. Estas se guardan (por defecto) en el directorio del usuario ‘.ssh’, aquí encontraremos nuestra clave pública y clave privada, debemos tener en cuenta que la clave pública es aquella que termina en ‘.pub’.

Copiar llave pública en el servidor

Por último, lo que debemos hacer es copiar la llave pública dentro del servidor en el archivo ‘authorized_keys’ contenido en el directorio ‘.ssh’.

Podemos hacerlo manualmente, iniciando una sesión remota en el servidor con el siguiente comando:

ssh usuario@ip-servidor

Ingresamos la contraseña del usuario en el servidor y pegamos dentro del archivo correspondiente el valor de la llave pública (la secuencia de caracteres contenida en el archivo de terminación .pub), o empleamos la herramienta de SSH para copiarla de forma automática con el siguiente comando:

ssh-copy-id -i ~/.ssh/public_key.pub usuario@ip-sevidor

Luego de ingresar la contraseña y copiar la llave pública en el servidor exitosamente, no hará falta colocar la contraseña de nuevo para establecer una conexión SSH, a menos que se haya establecido una frase de contraseña (passphrase) al momento de generar el par de llaves SSH, entonces tendremos que ingresar dicha frase de contraseña.

By Jorman Diaz

Técnico en electrónica y estudiante de programación camino a Full Stack. perfil de Gravatar

Publicaciones Relacionadas