
host1
Ich habe der Einfachheit halber mehrere SSH-Hosts (ein Dutzend), host2
usw.
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.local
und 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 abc
und 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!