Cómo autenticarse a través de SSH con claves en lugar de contraseñas

SSH es una excelente forma de obtener acceso remoto a su computadora. Cuando abre los puertos en su enrutador (puerto 22 para ser exactos), no solo puede acceder a su servidor SSH desde su red local, sino desde cualquier parte del mundo.

SSH es una excelente forma de obtener acceso remoto a su computadora.  Cuando abre los puertos en su enrutador (puerto 22 para ser exactos), no solo puede acceder a su servidor SSH desde su red local, sino desde cualquier parte del mundo.
Anuncio

Cómo autenticar a través de SSH con claves en lugar de clave de contraseñas SSH es una excelente forma de obtener acceso remoto a su computadora. Similar a FTP, puede conectarse a través de SSH FTP Qué es SSH y cómo es diferente de FTP [Tecnología explicada] Qué es SSH y cómo es diferente de FTP [Explicación de la tecnología] Lea más para obtener acceso seguro a un servidor de archivos con su FTP favorito cliente Transferencias principales de archivos FTP en todos sus sitios con FileZilla Master Transferencias FTP de archivos en todos sus sitios con FileZilla Una gran cantidad de clientes FTP de la antigüedad tuvieron problemas cuando se trataba de grandes transferencias de archivos. Las aplicaciones experimentaron los tiempos de espera habituales que esperaría cuando la computadora permanezca allí por 15 a ... Leer más, acceder rápidamente a archivos remotos, o incluso montar un disco de red en su computadora. Pero hay más en SSH que el acceso remoto a archivos. El inicio de sesión a través de SSH en la Terminal (o usando PuTTY en Windows) le da acceso remoto al shell (después de todo, SSH es la abreviación de Secure SHell). Es la forma en que administro mi servidor de medios a distancia.

Cuando abre los puertos ¿Qué es el reenvío de puertos y cómo puede ayudarme? [Explicaciones de MakeUseOf] ¿Qué es el reenvío de puertos y cómo puede ayudarme? [MakeUseOf Explains] ¿Lloras un poco cuando alguien te dice que hay un problema de reenvío de puertos y por eso tu nueva y brillante aplicación no funcionará? Su Xbox no le permitirá jugar juegos, sus descargas de torrents se niegan ... Lea más en su enrutador (puerto 22 para ser exactos) no solo puede acceder a su servidor SSH desde su red local, sino desde cualquier parte del mundo.

Sin embargo, no quiere arriesgarse a usar una contraseña débil para la autenticación. Si alguien obtiene acceso a su computadora a través de SSH, obtiene acceso completo a la shell. Para ser claros, eso no es algo que queremos. Afortunadamente, es muy fácil configurar su servidor SSH global de una manera muy segura mediante el uso de la autenticación basada en claves y la desactivación de la autenticación de contraseñas en su servidor.

¿Esto es para mí?

Es tentador crecer relajado con seguridad personal. Si está utilizando el servidor por medios privados, podría pensar que las personas simplemente no conocen su servidor y, por lo tanto, no intentarán hackearlo: seguridad en la oscuridad. Esa sería una suposición muy incorrecta. Debido a que (la mayoría) del tráfico SSH se transmite en el puerto 22, los atacantes rutinariamente verifican la visibilidad del puerto 22 en direcciones IP aleatorias, seguidas de un ataque de fuerza bruta. Esta es una de las maneras en que se crean botnets para usar en ataques DDOS. ¿Qué es un ataque DDoS? [MakeUseOf Explains] ¿Qué es un ataque DDoS? [MakeUseOf Explains] El término DDoS silba cuando el ciberactivismo se agita en masa. Este tipo de ataques son noticia internacional por múltiples razones. Los problemas que impulsan esos ataques DDoS a menudo son controvertidos o altamente ... Leer más.

Para abreviar: si transmite su servidor SSH a través de Internet (es decir, puerto de reenvío 22), entonces sí, esto es para usted.

La idea de los inicios de sesión SSH basados ​​en claves

Los inicios de sesión de SSH basados ​​en claves se basan en la idea de la criptografía de clave pública. Nos llevaría demasiado lejos explicar las complejidades, pero trataremos de hacer una imagen simple de lo que ocurre detrás de escena.

En el proceso a continuación, su computadora cliente genera dos claves: una clave pública y una privada. La idea general es que puede cifrar datos con la clave pública, pero solo descifrarlos con la clave privada. Pondremos la clave pública en el servidor y le pediremos que encripte toda la comunicación saliente con ella. Esto asegura que solo aquellos clientes con la clave privada puedan descifrar y leer los datos.

1. Instalar OpenSSH

Primero, vamos a configurar un servidor SSH usando OpenSSH. Si ya tiene un servidor SSH ejecutándose y solo desea saber cómo configurar la autenticación basada en claves, puede omitir este paso. Use su administrador de paquetes favorito para instalar la aplicación de servidor OpenSSH. La forma más simple podría ser ejecutar el comando apt-get desde la Terminal.

sudo apt-get install openssh-server

Ingrese su contraseña, confirme y espere un minuto para que termine de instalarse. Felicitaciones, ahora tiene un servidor SSH. (¡Eso fue fácil!)

ubuntu-install-openssh

Puede usar la aplicación tal cual o editar /etc/ssh/sshd_config para configurarla. Ejecute el comando man sshd_config en Terminal para obtener más información. Otro gran recurso para aprender más acerca de OpenSSH es la página de ayuda relevante de Ubuntu.

2. Generar llaves

Generaremos un conjunto de claves. Ejecute los siguientes comandos (adaptado de la página de Ayuda de OpenSSH / Keys Ubuntu).

mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa

El primer comando crea un directorio oculto '.ssh' en su carpeta de inicio, el segundo comando cambia los permisos de acceso de la carpeta mientras que el tercer comando realmente genera un conjunto de claves RSA. En primer lugar, se le pedirá una ubicación para guardar las claves (déjelo en blanco y presione enter para guardar en la ubicación predeterminada) y el segundo para una frase de contraseña.

Esta frase de contraseña encripta aún más la clave privada que está almacenada en su computadora, esencialmente dándole más tiempo para asegurar el servidor SSH si alguna vez roban su clave privada. Asegúrate de elegir una frase de contraseña que puedas recordar, ya que tendrás que ingresarla cuando intentes usar tu clave.

3. Transfiere la clave pública

A continuación, deberá transferir la clave pública que generó en el paso anterior a la computadora del servidor SSH. Si su máquina cliente también ejecuta Linux, esto se puede lograr muy fácilmente ejecutando el siguiente comando (sustituyendo el nombre de usuario y la dirección IP en su servidor SSH).

ssh-copy-id @

Si su cliente no es compatible con el comando ssh-copy-id, puede utilizar el siguiente comando. Es un poco más intrincado, pero esencialmente logra los mismos resultados.

cat ~/.ssh/id_rsa.pub | ssh @ "mkdir ~/.ssh; cat>>~/.ssh/authorized_keys"

Se le pedirá que ingrese la contraseña de usuario para el servidor SSH. Si los comandos se ejecutan sin errores, su clave pública se habrá copiado en el servidor.

4. Deshabilitar la autenticación de contraseña

Tenga en cuenta que su sistema aún no es más seguro que después del paso uno. Aunque al menos un cliente está configurado para usar la autenticación basada en claves, esto aún deja espacio para que otros clientes se conecten con una contraseña. Para finalizar, desactivaremos la autenticación de contraseña por completo. Después de este paso, solo las computadoras que pasaron por el proceso anterior pueden conectarse a su servidor SSH.

Para deshabilitar la autenticación de contraseña, edite el /etc/ssh/sshd_config en su editor favorito. Una de las formas más fáciles de editar un archivo restringido es, nuevamente, usar Terminal. (Soy parcial a nano, pero puedes usar lo que sea que te resulte más cómodo).

sudo nano /etc/ssh/sshd_config

Cerca de 40 líneas de la parte inferior del archivo, encontrarás

#PasswordAuthentication yes

Elimine el signo de número (#) y cambie la configuración a 'no', como se muestra a continuación.

PasswordAuthentication no

El archivo final debería verse más o menos así:

sshd_config

Guarde el archivo presionando CTRL + X. Confirma la edición y el nombre de archivo, y casi has terminado. Simplemente reinicie el servidor SSH para ejecutarlo con estas nuevas configuraciones.

sudo restart ssh

También notará que su cliente dejará de pedir la frase de contraseña para descifrar su clave si la autenticación de contraseña está deshabilitada en el servidor. Ahora que tiene un servidor SSH seguro, ¿cómo piensa usarlo? ¿Como un servidor de archivos seguro, un shell remoto o para reenviar otros servicios a través de SSH? ¡Háganos saber en la sección de comentarios!

Crédito de la imagen: Shutterstock

In this article