
¿Qué es SSH?
SSH (Secure Shell) es un protocolo de red que permite a los usuarios conectarse de forma segura a otros sistemas a través de una red no segura. Proporciona:
- Autenticación segura (normalmente mediante contraseñas o claves).
- Cifrado de datos, evitando que la información pueda ser interceptada.
- Acceso remoto a sistemas y la posibilidad de ejecutar comandos como si estuvieras en el equipo remoto.
¿Qué es OpenSSH?
OpenSSH es una implementación libre y de código abierto del protocolo SSH. Es una herramienta ampliamente utilizada en sistemas Unix/Linux para conexiones seguras entre equipos.
OpenSSH Server y OpenSSH Client
- OpenSSH Server: Permite que otros equipos se conecten de manera remota al sistema donde está instalado. Es el componente que recibe las conexiones SSH.
- OpenSSH Client: Es el programa usado para iniciar una conexión remota desde tu equipo hacia otro sistema que tiene configurado un servidor SSH.
Características de OpenSSH
- Cifrado robusto: Utiliza algoritmos de cifrado modernos como AES, ChaCha20, y RSA.
- Autenticación segura: Compatible con contraseñas, claves SSH y métodos avanzados como autenticación de dos factores.
- Túneles seguros: Soporta túneles TCP/IP y reenvío de puertos para acceder a servicios internos de manera segura.
- Compatibilidad amplia: Funciona en diversas plataformas, como Linux, Windows y macOS.
- Extensibilidad: Soporta módulos adicionales y personalización.
- Herramientas integradas: Como
scp
ysftp
para transferir archivos de manera segura.
Ventajas de OpenSSH
- Seguridad mejorada: Asegura conexiones remotas mediante cifrado.
- Ligero y eficiente: Requiere pocos recursos del sistema.
- Gratuito y de código abierto: Sin costos de licencias.
- Multipropósito: Conexión remota, transferencia de archivos y reenvío de puertos.
- Configuración flexible: Puedes personalizarlo según tus necesidades.
Configurar un servidor SSH en un entorno LAMP (Linux, Apache, MySQL, PHP) implica instalar y configurar SSH junto con el stack LAMP en un sistema Linux.
Instalación de OpenSSH en Debian 12
Instalar OpenSSH Server en Debian 12
Instalar el paquete del servidor OpenSSH
Ejecuta el siguiente comando para instalar el servidor OpenSSH:
$ sudo apt install openssh-server
Verificar el estado del servidor SSH
Después de la instalación, verifica que el servicio esté activo:
$ sudo systemctl status ssh
Si está en funcionamiento, debería mostrar un estado como active (running).
Si no está activo, puedes iniciarlo:
$ sudo systemctl start ssh
Habilitar el servicio al inicio del sistema
Para asegurarte de que el servicio SSH se inicie automáticamente cada vez que enciendas el sistema:
$ sudo systemctl enable ssh
Instalar OpenSSH Client en Debian 12
El cliente SSH suele estar instalado por defecto en Debian. Para asegurarte de que está disponible:
- Instalar el cliente SSH (si no está instalado)
$ sudo apt install openssh-client
Configuración básica de OpenSSH
- Archivo de configuración
El archivo principal de configuración del servidor SSH es:
/etc/ssh/sshd_config
Algunas configuraciones comunes:
- Puerto del servicio (por defecto es el 22): Cambia el puerto para mayor seguridad:
Port 2222
- Permitir o denegar el acceso root: Es recomendable desactivar el acceso como root para mejorar la seguridad:
PermitRootLogin no
- Usar autenticación por claves en lugar de contraseñas: Configura esto añadiendo:
PasswordAuthentication no
PubkeyAuthentication yes
Asegúrate de configurar claves públicas antes de desactivar las contraseñas.
Reinicia el servicio SSH para aplicar los cambios:
$ sudo systemctl restart ssh
¡Con esto, habrás configurado la autenticación con claves públicas!
- Configurar claves públicas
Configurar claves públicas para autenticarse mediante SSH en Debian 12 implica generar un par de claves (pública y privada) en el cliente y luego transferir la clave pública al servidor. Esto elimina la necesidad de usar contraseñas para iniciar sesión y aumenta la seguridad
En el cliente (tu equipo local)
1. Generar un par de claves SSH
Abre una terminal y ejecuta el comando:
$ ssh-keygen -t rsa -b 4096
-t rsa
: Especifica el tipo de clave (RSA en este caso).-b 4096
: Define el tamaño de la clave en bits para mayor seguridad.
El sistema te pedirá una ubicación para guardar las claves. Presiona Enter para usar la ubicación predeterminada (~/.ssh/id_rsa
).
También puedes establecer una contraseña opcional para proteger la clave privada.
Verifica las claves generadas
El comando anterior crea dos archivos en el directorio ~/.ssh/
:
id_rsa
: Tu clave privada (guárdala segura y no la compartas).id_rsa.pub
: Tu clave pública (se comparte con el servidor).
En el servidor SSH
1. Copiar la clave pública al servidor
Utiliza el comando ssh-copy-id
para transferir tu clave pública al servidor:
$ ssh-copy-id usuario@ip_del_servidor
Reemplaza usuario
con tu nombre de usuario en el servidor y ip_del_servidor
con la dirección IP o el nombre de host del servidor. Este comando:
- Te pedirá la contraseña del usuario.
- Añadirá automáticamente tu clave pública al archivo
~/.ssh/authorized_keys
en el servidor.
Configurar permisos correctos en el servidor
Asegúrate de que los permisos en el servidor sean correctos:
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
Seguridad adicional (opcional)
- Configura un firewall para permitir solo conexiones necesarias
$ sudo apt install ufw
$ sudo ufw allow 2222/tcp
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw enable
Con esto, tu servidor LAMP estará accesible de manera segura mediante SSH.
Para saber la dirección IP o el nombre del servidor en Debian 12
Saber la IP del servidor en Debian 12
$ ip a
Esto mostrará una lista de interfaces de red con sus respectivas direcciones IP. Busca la dirección bajo la sección de la interfaz activa, como eth0
, ens33
o wlan0
.
Usar hostname -I
Este comando devuelve solo las direcciones IP asignadas al servidor:
$ hostname -I
Saber la IP pública (si el servidor está conectado a internet)
Si el servidor tiene acceso a internet, usa este comando para obtener la IP pública:
$ curl ifconfig.me
Esto mostrará la IP pública desde la cual el servidor es accesible desde internet.
Saber el nombre del servidor (hostname)
a) Mostrar el nombre del servidor
$ hostname
Esto devolverá el nombre del servidor (por ejemplo, mi-servidor
).
Comprobar el entorno LAMP y SSH.
Desde el cliente, intenta conectarte al servidor:
$ ssh usuario@ip_del_servidor
$ ssh javier02@direccionIPServer

Si todo está configurado correctamente, no se te pedirá una contraseña, y la autenticación será automática.
Accede al servidor web con un navegador:
http://<IP_DEL_SERVIDOR>

Conclusión
OpenSSH es una herramienta esencial para acceder y administrar servidores de forma remota de manera segura. Proporciona un canal encriptado que protege contra intercepciones y ataques de terceros, lo que lo hace ideal para gestionar servidores en redes públicas o privadas. Su flexibilidad al permitir configuraciones avanzadas como autenticación por claves públicas, túneles SSH y reenvío de puertos lo convierten en una solución robusta y ampliamente utilizada.