Si realiza algún trabajo remoto en servidores (o contenedores) Linux, probablemente lo haga a través de un shell seguro (SSH). Aunque el título del programa contiene la palabra «seguro», no debes asumir que está bloqueado de forma predeterminada. Claro, es mucho más seguro que, digamos, el antiguo telnet, pero hoy en día siempre es necesario hacer un esfuerzo adicional para garantizar la seguridad de sus sistemas y datos.
Fuera de la caja, Coincidencia segura Funciona exactamente como cabría esperar: con un nombre de usuario y contraseña. Entonces emite el comando ssh [email protected] y se le solicitará la contraseña del usuario ralph en el servidor asociado con example.com.
Hay una manera mejor de hacer esto, una que tiene menos probabilidades de provocar un robo en el servidor. Este método es la autenticación de clave SSH.
La autenticación de claves SSH funciona con un par de claves SSH que se genera en su máquina local. Un par de claves consta de una clave privada y una clave pública. La clave privada permanece segura en su máquina local y la clave pública se envía al servidor al que desea conectarse de forma remota. Con el par de claves en su lugar, cada vez que inicia sesión en el dispositivo, las claves se dan la mano para verificar que coincidan. Si estas claves coinciden, se le concederá acceso al servidor. Si las claves no coinciden, no tendrás suerte.
Esta configuración es mucho más segura que la autenticación tradicional de nombre de usuario/contraseña y debe usarse para cada servidor Linux que utilice.
Déjame mostrarte cómo hacer realidad la autenticación de clave SSH.
Qué necesitas
Para esta demostración, necesitará al menos dos máquinas Linux: una local y otra remota. Dado que todo esto se hace a través de la línea de comando, no necesita configurar su entorno de escritorio. Por supuesto, necesitará la dirección IP o el dominio del servidor remoto y la máquina local debe poder acceder al servidor remoto de forma remota.
Crear un par de claves SSH
Lo primero que debes hacer es crear tu par de claves SSH. Esto se hace en su cliente local. Inicie sesión en esta máquina y genere el par de claves usando el comando:
Se le preguntará dónde está almacenada la clave (la ubicación predeterminada es ~/.ssh) Luego se le pedirá que escriba y verifique la contraseña del par de claves. Asegúrese de utilizar una contraseña segura/única para este propósito.
El comando anterior creará dos archivos: id_rsa (clave privada) y id_rsa.pub (Llave pública).
Copie su clave al dispositivo remoto
El siguiente paso es copiar su clave pública al dispositivo remoto. Afortunadamente, SSH tiene una función incorporada para hacerlo más fácil. Para copiar la clave, simplemente ejecute el siguiente comando:
Donde USUARIO es su nombre de usuario de Linux y SERVIDOR es la dirección IP o dominio del servidor remoto. Primero se le solicitará la contraseña SSH del usuario remoto. Tras una autenticación exitosa, la clave pública se guardará en un archivo ~/.ssh Directorio en el servidor remoto.
Luego puede probar la autenticación de la clave SSH intentando iniciar sesión en la máquina remota nuevamente, usando:
ssh USUARIO@SERVIDOR
Donde USUARIO es el nombre de usuario y SERVIDOR es la dirección IP o el dominio del servidor remoto. Esta vez, se le pedirá la contraseña de su clave SSH (no su contraseña de usuario).
Felicitaciones, su autenticación de clave SSH ya está funcionando.
Sin embargo, podemos mejorar aún más la seguridad.
Configurar un servidor SSH para aumentar la seguridad
Antes de dar el siguiente paso, asegúrese de crear los pares de claves y copiar la clave pública al servidor en cualquier máquina cliente que necesite acceso al servidor remoto. Si no sigue este paso, encontrará que esos dispositivos no podrán iniciar sesión (incluso con cuentas de usuario válidas). La única forma de evitar esto es copiar/pegar manualmente el contenido de la clave pública SSH desde la máquina cliente a una máquina. ~/.ssh/claves_autorizadas El archivo está en el servidor.
Lo que haremos ahora es asegurarnos de que la autenticación de clave pública esté habilitada y la autenticación de contraseña esté deshabilitada (ambas en el servidor remoto).
Abra el archivo de configuración del demonio SSH (en el servidor remoto) para editarlo con el comando:
sudo nano /etc/ssh/sshd_config
Primero encuentra la línea:
#PubkeyAuthentication Sí
Cambie esta línea a:
Autenticación de clave pública Sí
Y luego encuentra la línea:
#Autenticación con contraseña Sí
#Autenticación con contraseña Sí |
Cambie esta línea a:
Número de autenticación Contraseña
Autenticación de contraseña No |
Guarde y cierre el archivo.
Reinicie SSH con el comando:
sudo systemctl reiniciar sshd
sudo sistemactl Reanudar sshd |
Antes de salir de la conexión actual, abra otra ventana de terminal (en la máquina en la que copió la clave pública al servidor) e intente iniciar sesión a través de SSH. Si se le concede acceso, habrá confirmado con éxito que la única forma de iniciar sesión a través de SSH es mediante autenticación de clave.
En este punto, cualquier persona que intente iniciar sesión en su servidor Linux sin un par de claves coincidente será rechazada.
YOUTUBE.COM/THENEWSTACK
La tecnología avanza rápido, nunca te pierdas un episodio. Suscríbase a nuestro canal de YouTube para transmitir todos nuestros podcasts, entrevistas, demostraciones y más.
Participar
«Organizador. Escritor. Nerd malvado del café. Evangelista general de la comida. Fanático de la cerveza de toda la vida.