Automatizar el reenvío de puertos ssh usando DNS

Automatizar el reenvío de puertos ssh usando DNS

Tengo varios hosts ssh (una docena), por simplicidad host1, host2etc.

Con frecuencia necesito reenviar el puerto, por ejemplo

ssh -L 8888:localhost:8888 host1
ssh -L 8889:localhost:8888 host2
ssh -L 8890:localhost:80   host2

Esto es molesto ya que 1) necesito recordar la asignación de puertos locales a hosts y 2) necesito hacerlo manualmente

Me gustaría implementar algún tipo de sistema que escuche hosts específicos (localmente, en mi máquina), por ejemplo, host1.8888.ssh.localy abra un túnel a esta dirección automáticamente.

Respuesta1

Puedes configurar todo esto dentro del archivo de configuración ssh, que generalmente se encuentra en la ubicación:$HOME/.ssh/config

Por ejemplo:

Host abc
    Hostname 1.2.3.4
    Port 345
    IdentityFile /path/to/id_rsa
    LocalForward 8888 localhost:8888
    User root
Host def
    Hostname 2.3.4.5
    User root
    LocalForward 8889 localhost:8889

De esta manera, solo necesita escribir ssh abcy se aplicarán todas las configuraciones que especifique allí. Opciones disponibles que se encuentran dentro delpágina de manual.

Respuesta2

yo desarrolletúnelese es un servicio que establecerá túneles y los mantendrá en funcionamiento.

server "srv_us"
  HostName="srv.us"
  User="root"
  IdentityFile="/root/.ssh/id_ed25519"

tunnelR "srv_us_http"
  servername="srv_us"
  remoteaddress="1"
  remoteport=80
  localaddress="127.0.0.1"
  localport=8080

Si tiene un enrutador OpenWrt, puede usar uno similartúnelservicio. Recientemente se agregó una GUI para configurarlo luci-app-sshtunnel.

Respuesta3

Una nota del futuro, que no tiene nada que ver con la pregunta formulada, pero resolvió el problema de fondo.

Si hace cosas en vs code en el servidor, después de iniciar cualquier proceso (por ejemplo, jupyter, tensorboard, paneles de control, servidores web), vs code reenvía esos puertos a la máquina local, por lo que no es necesario memorizar nada, los puertos se reenvían solo desde el host con el que trabaja actualmente, y cualquier número de puertos, y solo los puertos usados. ¡Qué comodidad!

información relacionada