
Demonio de conexión SSH para Debian/Raspbian/Ubuntu/etc
sidedoor mantiene una conexión SSH o un túnel con un demonio de script de shell.
El caso de uso principal es mantener un reenvío de puerto remoto al servidor SSH local (o a otro puerto). De esta manera, se puede acceder al dispositivo local sin utilizar conexiones entrantes que podrían estar bloqueadas por un NAT o cortafuegos, o que de otro modo no serían prácticas con dispositivos móviles.
Los clientes SSH pueden conectarse al dispositivo a través del proxy SSH inverso al que sidedoor tuneliza. Este servidor proxy puede ser no confiable y estar administrado por un tercero o un servicio en la nube.
sidedoor habilita los keepalives SSH y reintenta SSH con retroceso exponencial. Para reconectarse lo antes posible, restablece el retroceso cuando se activa (o cambia) una interfaz de red.
Otros casos de uso:
¿Estás usando sidedoor? Informes de errores, solicitudes de funciones — ¡por favor abre un issue! Las solicitudes de extracción (pull requests) son bienvenidas.
sidedoor está empaquetado para Debian y sistemas basados en Debian como Raspbian, Ubuntu y VyOS/EdgeOS, pero debería funcionar en cualquier entorno POSIX con un cliente SSH (OpenSSH) SSH.
Si sidedoor está en los repositorios de tu distribución (Debian 9+, Ubuntu 17.04+), simplemente instálalo con tu gestor de paquetes.
sudo apt install sidedoor
De lo contrario, puedes descargar manualmente los debs desde la página de lanzamientos.
Para otorgar acceso root completo al usuario sidedoor,
instala el paquete sidedoor-sudo.
El servidor remoto y los reenvíos de puerto se configuran en /etc/default/sidedoor.
Los archivos de configuración SSH se encuentran en el directorio /etc/sidedoor.
Configura REMOTE_SERVER y OPTIONS en /etc/default/sidedoor.
Para algunos argumentos a pasar en OPTIONS, consulta la entrada del blog
Reenvío de puertos local y remoto explicado con ejemplos
y la página del manual de ssh.
Edita los archivos de configuración SSH en /etc/sidedoor.
id_rsa: Clave privada SSH para acceder al servidor remoto.
Puedes usar ssh-keygen para crear esta clave
(presiona y cuando se te solicite sobrescribir el archivo existente):
sudo ssh-keygen -t rsa -N '' -f /etc/sidedoor/id_rsa
La clave pública correspondiente id_rsa.pub deberá incluirse en
el archivo ~/.ssh/authorized_keys del usuario remoto.
/etc/ssh/sshd_config.
ChallengeResponseAuthentication no y PasswordAuthentication no).ListenAddress ::1 y ListenAddress 127.0.0.1).sshd, ej.,
sudo service ssh reload.ssh_client_config_example e inclúyelo en el archivo
~/.ssh/config de un cliente para acceder fácilmente al servidor SSH tunelizado
con ssh, scp, rsync, etc.sidedoor está pensado como una solución ligera para tunelizar puertos con dependencias mínimas, pero existen algunas alternativas con más funcionalidades.
Tor proporciona anonimato a servidores ejecutados como servicios ocultos, pero también maneja la travesía NAT.
Ventajas:
Desventajas:
Tanto en el dispositivo como en los clientes, instala Tor.
sudo apt install tor
En el dispositivo que se está exponiendo, edita /etc/tor/torrc
para crear un servicio oculto en el puerto 22.
HiddenServiceDir /var/lib/tor/sshd/
HiddenServicePort 22 127.0.0.1:22
HiddenServiceAuthorizeClient stealth client
Reemplaza "client" con una lista separada por comas de nombres de clientes para generar múltiples secretos de autorización.
Luego recarga Tor y obtén el nombre de host cebolla y los datos de autorización.
sudo service tor reload
sudo cat /var/lib/tor/sshd/hostname
En los clientes, edita /etc/tor/torrc
para agregar el nombre de host cebolla y los datos de autorización que se ven en el archivo hostname.
HidServAuth <hostname>.onion <secret>
Luego recarga Tor y ejecuta torsocks ssh <hostname>.onion o configura ProxyCommand
en el archivo ~/.ssh/config.
ProxyCommand torsocks nc <hostname>.onion 22
autossh, al igual que sidedoor,
inicia ssh y lo reinicia según sea necesario.
Algunas diferencias incluyen:
sidedoor es un demonio de script de shell minimalista. autossh es un programa C más extenso y configurable.
sidedoor habilita los keepalives SSH
(ServerAliveInterval y ServerAliveCountMax),
que están disponibles en versiones modernas de OpenSSH.
autossh monitorea ssh enviando datos a través de
un bucle de reenvíos de puerto (esta función es anterior a los keepalives SSH),
aunque esto se puede deshabilitar con la opción -M 0.
sidedoor está diseñado para ejecutarse automáticamente como un servicio, por lo que el paquete incluye scripts de init/systemd y archivos de configuración. autossh no incluye un script de init/systemd (error de Debian #698390).
sidedoor deshabilita comandos remotos y asignación de pseudo-terminal. Para uso interactivo, considera autossh con keepalives SSH o Mosh.
sidedoor siempre reintenta si ssh sale con un estado de salida distinto de cero.
autossh no reintenta si ssh sale demasiado rápido en el primer intento,
lo que puede ocurrir cuando la conectividad de red o la resolución DNS
está rota, particularmente en dispositivos móviles.
Tanto sidedoor como autossh tienen lógica de retroceso de reintento.
sidedoor restablece el retroceso de reintento cuando se activa una interfaz de red,
para intentar reconectarse lo antes posible, al recibir SIGUSR1
desde un script if-up.d. autossh no tiene ganchos de estado de red.
Derechos de autor 2015-2017 Dara Adib.
Este programa es software libre: puedes redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General de GNU publicada por la Free Software Foundation, ya sea la versión 3 de la Licencia, o (a tu elección) cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulta la Licencia Pública General de GNU para más detalles.
Deberías haber recibido una copia de la Licencia Pública General de GNU junto con este programa. Si no es así, visita https://www.gnu.org/licenses/.
known_hosts: Clave de host SSH del servidor remoto.
Opcionalmente, otorga acceso remoto al usuario local de sidedoor añadiendo
clave(s) pública(s) SSH al archivo /etc/sidedoor/authorized_keys.
/etc/sidedoor/authorized_keys es un enlace simbólico a
~sidedoor/.ssh/authorized_keys.
El paquete sidedoor-sudo, si está instalado, proporciona acceso root completo
a este usuario.
Reinicia el servicio sidedoor para aplicar los cambios.
sudo service sidedoor restart