Ir al contenido

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

·3 mins
Rogelio Guerra Riverón
Autor
Rogelio Guerra Riverón
Construyendo mi propia infraestructura web desde cero. Aquí documento cada paso: servidores, redes, contenedores y lo que vaya surgiendo.

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.