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-tools
Generé las claves pública y privada del servidor:
cd /etc/wireguard
sudo wg genkey | tee privatekey | wg pubkey > publickey
Creé 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/32
Activé el servicio:
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
Abrí el puerto UDP 51820 en el firewall (en mi caso, el router):
sudo ufw allow 51820/udp
Paso 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_publickey
Creé 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 = 25
Exporté 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 show
Paso 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.