Cómo instalar y configurar SSH
SSH (Secure Shell) es un protocolo utilizado para conectarse de forma segura a sistemas remotos, ejecutar comandos y transferir datos. Proporciona un método seguro para que los administradores de sistemas, desarrolladores y usuarios gestionen servidores y otros dispositivos de forma remota, utilizando conexiones cifradas. Instalar y configurar SSH es esencial para acceder de forma segura a los servidores, ya sea con fines de administración de sistemas, trabajo remoto o desarrollo.
En este artículo, te guiaremos a través de cómo instalar y configurar SSH en Linux, cubriendo los conceptos básicos, opciones de configuración y recomendaciones de seguridad.
¿Qué es SSH?
SSH son las siglas de Secure Shell, y permite a los usuarios conectarse de forma segura a un sistema remoto a través de una interfaz de línea de comandos. El protocolo encripta los datos entre el cliente y el servidor, lo que lo convierte en un método seguro de comunicación, especialmente para acceder a servidores a través de una red no segura como Internet.
SSH opera por defecto a través del puerto 22 y puede utilizarse para:
- Acceso remoto a servidores
- Transferencia segura de archivos (mediante SCP o SFTP)
- Ejecución remota de comandos
- Reenvío de puertos y túneles
Paso 1: Instalación de SSH
La mayoría de las distribuciones de Linux vienen con SSH preinstalado, pero si no lo está, puedes instalarlo fácilmente utilizando el gestor de paquetes de tu distribución.
Para Ubuntu/Debian:
Para CentOS/RHEL:
Para Fedora:
Para Arch Linux:
Tras la instalación, tendrá el servidor y el cliente OpenSSH instalados, lo que le permitirá tanto ejecutar un servidor SSH como conectarse a otros servidores SSH.
Paso 2: Iniciar y habilitar el servicio SSH
Una vez instalado, es necesario iniciar el servicio SSH (también conocido como sshd – SSH daemon) y habilitarlo para que se ejecute al inicio del sistema.
Iniciar el servicio SSH:
Habilitar SSH para iniciar en el arranque:
Puede comprobar si SSH se está ejecutando correctamente escribiendo:
Si el servicio se está ejecutando, verá un estado activo que indica que SSH está listo para aceptar conexiones.
Paso 3: Configuración básica de SSH
El comportamiento de SSH es controlado por el archivo de configuración ubicado en:
Puede editar este archivo para modificar la configuración de SSH, como cambiar el puerto predeterminado, deshabilitar el inicio de sesión root o configurar la autenticación basada en claves.
Para editar el archivo, utilice un editor de texto como nano o vim:
Algunos cambios de configuración comunes incluyen:
1. Cambiar el puerto SSH por defecto
Por razones de seguridad, es una buena idea cambiar el puerto SSH por defecto de 22 a otro. Esto ayuda a reducir el riesgo de ataques automatizados dirigidos al puerto SSH predeterminado.
Encuentre la siguiente línea en el archivo de configuración:
Descoméntala y cambia el número de puerto:
Después de guardar el archivo, reinicie el servicio SSH para aplicar los cambios:
Asegúrese de actualizar las reglas de su cortafuegos para permitir conexiones en el nuevo puerto.
2. Desactivar el inicio de sesión raíz
Permitir el inicio de sesión root a través de SSH es un riesgo de seguridad. Para evitarlo, busque la siguiente línea en el archivo de configuración:
Cámbiela por:
Esto evitará el acceso root directo a través de SSH. Los usuarios todavía pueden iniciar sesión con una cuenta normal y luego cambiar a root usando sudo o su.
3. Activar la autenticación basada en claves
La autenticación basada en claves SSH es un método más seguro que el uso de contraseñas. Consiste en generar un par de claves SSH (clave pública y privada) y utilizar la clave privada para autenticarse.
Para activar la autenticación basada en claves, busque las siguientes líneas y asegúrese de que están configuradas como sí:
Esto desactiva el inicio de sesión basado en contraseña y sólo permite el acceso SSH a través de la autenticación basada en clave.
Paso 4: Generación de claves SSH (autenticación basada en claves)
Los pares de claves SSH proporcionan una forma segura de iniciar sesión sin contraseña. A continuación se explica cómo generar y configurar claves SSH:
Paso 1: Generar el par de claves SSH
En su máquina local, ejecute el siguiente comando para generar un par de claves:
Se le pedirá que introduzca un nombre de archivo para guardar la clave (o pulse Intro para utilizar la ubicación predeterminada) y una frase de contraseña opcional para mayor seguridad.
Se crean dos archivos:
- ~/.ssh/id_rsa: Tu clave privada (mantenla segura y no la compartas).
- ~/.ssh/id_rsa.pub: Tu clave pública (puede compartirse y añadirse a servidores remotos).
Paso 2: Copiar la clave pública al servidor
Para utilizar la clave para el inicio de sesión SSH, copie la clave pública en el servidor remoto al que desea acceder. Puede hacerlo con el comando ssh-copy-id:
Sustituya username por el nombre de usuario de su servidor remoto y remote_host por la dirección IP o el nombre de host del servidor.
Esto copiará tu clave pública al servidor y la añadirá al archivo ~/.ssh/authorized_keys, permitiéndote iniciar sesión sin contraseña.
Paso 3: Iniciar sesión con la clave SSH
Ahora, puede iniciar sesión en el servidor remoto utilizando su clave privada:
Si has configurado un puerto personalizado, especifícalo con la opción -p:
Paso 5: Asegurar su configuración SSH
Después de configurar SSH, es importante seguir las mejores prácticas de seguridad para asegurarse de que su servidor está protegido de accesos no autorizados.
1. Utilice contraseñas seguras (si utiliza autenticación por contraseña)
Si no está utilizando autenticación basada en claves, asegúrese de que todas las cuentas de usuario utilizan contraseñas fuertes y complejas.
2. Utilice un cortafuegos
Asegúrese de que el cortafuegos de su servidor sólo permite el tráfico en el puerto SSH que está utilizando. Por ejemplo, si ha cambiado SSH al puerto 2222, permita el tráfico en ese puerto mediante ufw (en Ubuntu/Debian) o firewalld (en CentOS/RHEL).
3. Limitar el acceso SSH
Limite el acceso SSH a direcciones IP o rangos específicos configurando el cortafuegos o utilizando /etc/hosts.allow y /etc/hosts.deny.
Paso 6: Probar y solucionar problemas de SSH
Después de configurar SSH, es importante probar su configuración. Intente iniciar sesión utilizando SSH para asegurarse de que todo funciona correctamente.
Consejos comunes para solucionar problemas de SSH:
- Compruebe la configuración del cortafuegos: Asegúrese de que el cortafuegos no está bloqueando el puerto SSH.
- Compruebe el estado del servicio SSH: Asegúrese de que el servicio SSH se está ejecutando con systemctl status ssh.
- Compruebe la configuración: Vuelva a comprobar el archivo /etc/ssh/sshd_config por si hubiera algún error de configuración.
- Utilice el modo detallado para depurar: Si hay problemas, utilice la opción -v cuando se conecte para ver la salida detallada:
Conclusión
Instalar y configurar SSH es una habilidad fundamental para cualquier administrador o usuario de Linux que necesite gestionar sistemas remotos de forma segura. Siguiendo esta guía, usted puede instalar SSH, configurarlo para un acceso seguro, e implementar las mejores prácticas para proteger su servidor de accesos no autorizados. Una vez configurado, SSH se convierte en una poderosa herramienta para la gestión remota, la automatización y la comunicación segura entre sistemas.