El problema#
Necesitaba acceder a mi servidor doméstico por SSH desde el móvil sin exponerlo directamente a internet. Las opciones obvias eran malas: abrir el puerto 22 al mundo es suicida, y confiar en apps de terceros con acceso root no me convencía. La solución que funcionó: WireGuard + Termius.
Por qué esta combinación#
WireGuard es ligero, rápido y consume poca batería en móviles. Termius es un cliente SSH pulido que maneja bien las claves privadas. Juntos, tienes acceso seguro sin complicaciones.
Paso 1: Instalación y configuración de WireGuard en el servidor#
Instalé WireGuard en mi servidor (Debian 12):
sudo apt update
sudo apt install wireguard wireguard-toolsGeneré las claves pública y privada del servidor:
cd /etc/wireguard
sudo wg genkey | tee privatekey | wg pubkey > publickeyCreé el archivo de configuración /etc/wireguard/wg0.conf:
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = [CONTENIDO DE privatekey]
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = [CLAVE PÚBLICA DEL MÓVIL - GENERARLA DESPUÉS]
AllowedIPs = 10.0.0.2/32Activé el servicio:
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0Abrí el puerto UDP 51820 en el firewall (en mi caso, el router):
sudo ufw allow 51820/udpPaso 2: Configuración del cliente en el móvil#
Instalé WireGuard desde la Play Store (Android) o App Store (iOS).
Generé las claves del móvil en el servidor:
wg genkey | tee mobile_privatekey | wg pubkey > mobile_publickeyCreé el archivo de configuración para el móvil:
[Interface]
Address = 10.0.0.2/24
PrivateKey = [CONTENIDO DE mobile_privatekey]
DNS = 8.8.8.8
[Peer]
PublicKey = [CLAVE PÚBLICA DEL SERVIDOR]
Endpoint = [IP_PÚBLICA_SERVIDOR]:51820
AllowedIPs = 10.0.0.0/24
PersistentKeepalive = 25Exporté este archivo como QR o lo pasé por USB al móvil. WireGuard lo importa directamente.
Activé la conexión en WireGuard del móvil y verifiqué conectividad:
wg showPaso 3: Configuración de SSH en Termius#
En Termius creé una nueva conexión:
- Host: 10.0.0.1 (la IP interna del servidor en WireGuard)
- Puerto: 22 (SSH estándar, no necesita estar abierto al exterior)
- Usuario: mi usuario habitual
- Autenticación: Clave privada SSH
Importé mi clave privada SSH desde los archivos del móvil. Termius la maneja sin exponer archivos.
Paso 4: Pruebas y ajustes#
Conecté a WireGuard desde el móvil. Abrí Termius y me conecté al servidor. Funcionó a la primera.
La latencia es imperceptible. El consumo de batería de WireGuard es mínimo (apenas 2-3% en 8 horas standby).
Detalles de seguridad que importan#
- El servidor SSH nunca está expuesto a internet
- WireGuard usa criptografía moderna (Noise protocol)
- Las claves privadas nunca viajan por la red
- El tráfico SSH dentro del túnel está doblemente encriptado
Lo que cambiaría#
Nada. Este setup lleva meses funcionando sin problemas. La única mejora sería usar direcciones DNS dinámicas si mi IP pública cambia, pero eso es otro artículo.
Actualización: Este mismo método funciona para conectar otros dispositivos (laptop, tablet). Solo genera nuevas claves y añade más peers en WireGuard.
Equipamiento recomendado#
- TECLAST T65 Tablet 13.4" Android 16 con teclado y lápiz — Tablet con 4G LTE como cliente SSH/VPN portable desde cualquier lugar
- Router GL.iNet MT3000 — Router con WireGuard integrado para montar el túnel VPN en minutos
- Soporte plegable para portátil de aluminio con ángulo ajustable — Ergonomía imprescindible si usas tablet o portátil para gestionar tu servidor
Enlaces de afiliado. Sin coste extra para ti.