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

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

SSH es una excelente manera de obtener acceso remoto a su computadora. Al igual que en FTP, puede conectarse a través de SSH FTP Qué es SSH y en qué se diferencia de FTP [Explicación de la tecnología] Qué es SSH y en qué se diferencia de FTP [Leer más sobre la tecnología] client Master Transferencias de archivos FTP en todos sus sitios con FileZilla Master Transferencias de archivos FTP 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í durante 15 a ... Leer más, acceda rápidamente a archivos remotos o incluso monte un disco de red en su computadora. Pero hay más para SSH que acceso a archivos remotos. El inicio de sesión a través de SSH en la Terminal (o el uso de PuTTY en Windows) le brinda acceso remoto a la shell (después de todo, SSH es la abreviatura de Secure SHell). Es como manejo mi servidor de medios desde una distancia.

Cuando abre los puertos ¿Qué es el reenvío de puertos y cómo puede ayudarme? [MakeUseOf Explica] ¿Qué es el reenvío de puertos y cómo puede ayudarme? [MakeUseOf Explica] ¿Llora un poco por dentro cuando alguien le dice que hay un problema de reenvío de puertos y es por eso que su nueva aplicación no funcionará? Tu Xbox no te permitirá jugar juegos, tus descargas de torrent se rechazan ... Lee más en tu enrutador (en el puerto 22 para ser exactos) no solo puedes acceder a tu servidor SSH desde tu red local, sino desde cualquier lugar del mundo..

Sin embargo, no desea 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 de shell completo. Solo 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 autenticación basada en clave y deshabilitando la autenticación de contraseña en su servidor por completo.

Esto es para mí?

Es tentador volverse relajado con la seguridad personal. Si está utilizando el servidor por medios privados, podría pensar que la gente simplemente no conoce su servidor y, por lo tanto, no intentará piratearlo, la seguridad a través de la oscuridad. Eso seria un muy suposición errónea Debido a que (la mayoría) el tráfico SSH se transmite en el puerto 22, los atacantes verifican de forma rutinaria la visibilidad del puerto 22 en direcciones IP aleatorias, seguido de un ataque de fuerza bruta. Esta es una de las formas en que las botnets están hechas para usarse en ataques DDOS ¿Qué es un ataque DDoS? [MakeUseOf explica] ¿Qué es un ataque DDoS? [MakeUseOf Explica] El término DDoS pasa silbando cada vez que el ciberactivismo levanta su cabeza en masa. Este tipo de ataques son titulares internacionales debido a múltiples razones. Los problemas que impulsan esos ataques DDoS a menudo son controvertidos o altamente ... Leer más .

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

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

Los inicios de sesión 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 dibujar una imagen simple de lo que está sucediendo detrás de la escena..

En el proceso a continuación, su computadora cliente genera dos claves: una clave pública y una clave privada. La idea general es que puede cifrar los 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 cifre todas las comunicaciones salientes con él. 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 en ejecución y solo quiere 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 sencilla aún podría ser ejecutar el apt-get comando desde la terminal.

sudo apt-get install openssh-server

Ingrese su contraseña, confirme y espere un minuto para que finalice la instalación. Enhorabuena, ahora tienes un servidor SSH. (¡Eso fue fácil!)

Puede utilizar la aplicación como está o editarla. / etc / ssh / sshd_config para configurarlo. Ejecutar el hombre sshd_config Comando en la Terminal para obtener más información. Otro gran recurso para aprender más sobre OpenSSH es la página de ayuda relevante de Ubuntu.

2. Generar claves

Generaremos un juego de llaves. Ejecute los siguientes comandos (adaptados 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 a la carpeta, mientras que el tercer comando genera un conjunto de claves RSA. Primero se le pedirá una ubicación para guardar las claves (déjelas en blanco y presione Entrar para guardarlas en la ubicación predeterminada) y la segunda 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 le da más tiempo para asegurar el servidor SSH si alguna vez le roban su clave privada. Asegúrese de elegir una frase de contraseña que pueda recordar, ya que tendrá que ingresarla cuando intente usar su clave.

3. Transferir 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 y para el nombre de usuario y la dirección IP en su servidor SSH).

ssh-copy-id @

Si su cliente no admite el comando ssh-copy-id, puede usar el siguiente comando en su lugar. Es un poco más complicado, 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 al servidor.

4. Desactivar la autenticación de contraseña

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

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

sudo nano / etc / ssh / sshd_config

Alrededor de 40 líneas desde 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 debe verse algo como esto:

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

sudo restart ssh

También notará que su cliente dejará de solicitar 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

Explorar más sobre: ​​Seguridad en línea, acceso remoto.