tl; dr? Verwenden ssh -g …
.
Ich nehme an, der Befehl, den Sie verwenden, ist wie
ssh -L 1234:server:5678 ssh_server
Auf lokaler Seite wird auf 127.0.0.1:1234
(IPv4) und [::1]:1234
(IPv6) überwacht. Lokale Verbindungen zu einer dieser Adressen erreichen Sie server:5678
vom ssh_server
. Andere Computer in Ihrem LAN können den Tunnel nicht erreichen, weil 127.0.0.1
und sie [::1]
Loopback-Adressen sind. für jede Maschine bedeuten sie die Maschine selbst.
Um Ihren Tunnel für andere Computer verfügbar zu machen, binden Sie ihn an eine Adresse, die er erreichen kann. Angenommen, es 192.168.0.14
handelt sich um eine gültige Adresse des Clients, der ausgeführt wird ssh
. binde daran:
ssh -L 192.168.0.14:1234:server:5678 ssh_server
oder an alle verfügbaren Adressen (wählen Sie einen Befehl):
ssh -L 0.0.0.0:1234:server:5678 ssh_server # IPv4 ssh -L [::]:1234:server:5678 ssh_server # IPv6 ssh -L 0.0.0.0:1234:server:5678 -L [::]:1234:server:5678 ssh_server # IPv4 and IPv6
Der letztere "offenste" Tunnel kann auch mit erstellt werden -g
. Von man 1 ssh
:
-g
Ermöglicht Remote-Hosts, eine Verbindung zu lokal weitergeleiteten Ports herzustellen.
-g
entspricht -o GatewayPorts=yes
und GatewayPorts yes
Einstellung in ssh_config
Datei. Dieser Auszug aus man 5 ssh_config
erklärt es noch besser:
GatewayPorts
Gibt an, ob Remote-Hosts eine Verbindung zu lokal weitergeleiteten Ports herstellen dürfen.ssh(1)
Bindet standardmäßig lokale Portweiterleitungen an die Loopback-Adresse. Dies verhindert, dass andere Remote-Hosts eine Verbindung zu weitergeleiteten Ports herstellen. GatewayPorts kann verwendet werden, um anzugeben, dassssh
lokale Portweiterleitungen an die Platzhalteradresse gebunden werden sollen, sodass Remote-Hosts Verbindungen zu weitergeleiteten Ports herstellen können. Das Argument mussyes
oder seinno
. Der Standardwert istno
.
So:
ssh -g -L 1234:server:5678 ssh_server
Anmerkungen:
- Vergessen Sie nicht, den ausgewählten Port in Ihrer Firewall zu öffnen.
- Sie können
autossh
nützlich finden ... - … Zusammen mit der
ExitOnForwardFailure
Optionssh
(erklärt inman 5 ssh_config
). - Im Allgemeinen weist ein HTTP-Server möglicherweise URLs zurück, die er nicht als seine eigenen betrachtet. Sie sagten,
localhost:port
funktioniert in Ihrem Browser. Falls URLs wie dieserhttp://192.168.0.14:1234
trotz des Tunnels nicht funktionieren, überprüfen Sie die Serverkonfiguration.
Zusätzliche Ressourcen: