Automatisieren Sie die SSH-Portweiterleitung mit DNS

Automatisieren Sie die SSH-Portweiterleitung mit DNS

host1Ich habe der Einfachheit halber mehrere SSH-Hosts (ein Dutzend), host2usw.

Ich muss häufig Ports weiterleiten, zB

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

Das ist ärgerlich, da ich 1) mir die Zuordnung von lokalen Ports zu Hosts merken muss und 2) dies manuell tun muss.

Ich möchte eine Art System implementieren, das bestimmte Hosts abhört (lokal, auf meinem Rechner), beispielsweise host1.8888.ssh.localund automatisch einen Tunnel zu dieser Adresse öffnet.

Antwort1

Sie können all diese Dinge in der SSH-Konfigurationsdatei konfigurieren, die sich normalerweise am folgenden Speicherort befindet:$HOME/.ssh/config

Zum Beispiel:

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

Auf diese Weise müssen Sie nur tippen ssh abcund alle Einstellungen, die Sie dort angeben, werden angewendet. Verfügbare Optionen finden Sie immanpage.

Antwort2

ich entwickelteSSH-TunnelDabei handelt es sich um einen Dienst, der Tunnel aufbaut und am Laufen hält.

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

Wenn Sie einen OpenWrt-Router haben, können Sie einen ähnlichenSSH-TunnelDienst. Vor kurzem wurde eine GUI zur Konfiguration von luci-app-sshtunnel hinzugefügt.

Antwort3

Eine Notiz aus der Zukunft, die nichts mit der gestellten Frage zu tun hat, sondern das zugrundeliegende Problem löst.

Wenn Sie Dinge in vs Code auf dem Server tun, leitet vs Code diese Ports nach dem Starten eines beliebigen Prozesses (z. B. Jupyter, Tensorboard, Dashboards, Webserver) an den lokalen Computer weiter. Sie müssen sich also nichts merken. Die Ports werden nur von dem Host weitergeleitet, mit dem Sie gerade arbeiten – und zwar in beliebiger Anzahl und nur in verwendeten Ports. Wie praktisch!

verwandte Informationen