Conectar el móvil a SSH desde cualquier lugar con WireGuard y Termius

Etiquetas:

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

Enlaces de afiliado. Sin coste extra para ti.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *