This commit is contained in:
Roger Rutishauser 2024-12-04 11:26:58 +01:00
parent 15bac35622
commit 31ebf01b0b

View File

@ -94,29 +94,23 @@ Dies ist z.B. nützlich, wenn man 2 WSL-Instanzen am Laufen hat, und man mit ssh
Verbindung von WSL A nach B: `ssh user@localhost -p 2222`. Nicht vergessen, den public key in `authorized_keys` von WSL B hinterlegen. Verbindung von WSL A nach B: `ssh user@localhost -p 2222`. Nicht vergessen, den public key in `authorized_keys` von WSL B hinterlegen.
## SSH Tunnel ## Local Port Forwarding
### Remote Port Forwarding Hier wird ein Port auf dem Laptop verwendet, um auf einen Dienst auf einem Remote Host B zugreifen zu können, der ansonsten nicht von aussen erreichbar wäre.
[SSH Remote Port Forwarding](https://gitlab.com/armindoerzbachtbz/cloud-native-bootcamp/-/blob/main/ssh/N2/ssh_remote_port_forwarding.md)
### Local Port Forwarding
Hier wird ein Port auf dem Host A verwendet, um auf einen Dienst auf einem Remote Host B zugreifen zu können, der ansonsten nicht von aussen erreichbar wäre.
Annahme: Auf dem Host B ist ein Dienst installiert, den man nur von dort aus erreichen kann. Z.B. läuft dort mysql auf Port 3306, aber Remote-Verbindungen sind nicht erlaubt (Achtung myql kann so eingerichtet sein, dass es eh nicht geht, weil über socks file... aber ist eine andere Geschichte.) Annahme: Auf dem Host B ist ein Dienst installiert, den man nur von dort aus erreichen kann. Z.B. läuft dort mysql auf Port 3306, aber Remote-Verbindungen sind nicht erlaubt (Achtung myql kann so eingerichtet sein, dass es eh nicht geht, weil über socks file... aber ist eine andere Geschichte.)
Mit folgendem SSH-Befehl kann dies umgangen werden: Mit folgendem SSH-Befehl kann dies umgangen werden:
``` ```
ssh -L [local_port]:[destination_address]:[destination_port] [username]@[ssh_server]
ssh -L 33333:127.0.0.1:3306 rogrut@v2202306200871231373.supersrv.de ssh -L 33333:127.0.0.1:3306 rogrut@v2202306200871231373.supersrv.de
``` ```
`33333` ist der lokale Port auf Host A. Als Verbindungsparameter in mysql workbench würde man 127.0.0.1:33333 angeben. `127.0.0.1:3306` ist mysql, der auf dem Host B läuft - von dort her gesehen auf localhost, also 127.0.0.1. `rogrut@v2202306200871231373.supersrv.de` schliesslich ist Benutzername und Adresse des Hosts.
Dabei wird man auch gleich auf dem Server engeloggt. In einem zweiten Terminal von Host A kann man dann über den lokalen Port auf den Dienst auf Host B zugreiffen.
Auf dem Host A ist somit `127.0.0.1:33333` gleichbedeutend wie auf dem Host B mit `127.0.0.1:3306`. So können Firewalls umgangen werden, weil `v2202306200871231373.supersrv.de:3306` nicht geöffnet ist. `33333` ist der lokale Port auf dem Laptop. Als Verbindungsparameter in mysql workbench würde man 127.0.0.1:33333 angeben. `127.0.0.1:3306` ist mysql, der auf dem Host B läuft - von dort her gesehen auf localhost, also 127.0.0.1. `rogrut@v2202306200871231373.supersrv.de` schliesslich ist Benutzername und Adresse des Hosts B.
Dabei wird man auch gleich auf dem Server engeloggt. In einem zweiten Terminal vom Laptop kann man dann über den lokalen Port auf den Dienst auf Host B zugreiffen.
Sobald die Verbindung steht, kann auf dem Host A eine Verbindung zu mysql auf Host B hergestellt werden. Auf dem Laptop ist somit `127.0.0.1:33333` gleichbedeutend wie auf dem Host B mit `127.0.0.1:3306`. So können Firewalls umgangen werden, weil `v2202306200871231373.supersrv.de:3306` nicht geöffnet ist.
Es wären auch Verbindungen zu mysql DBs möglich, die in Docker laufen, z.B. unter `63003`, oder sogar unter anderen IPs. Es wären auch Verbindungen zu mysql DBs möglich, die in Docker laufen, z.B. unter `63003`, oder sogar unter anderen IPs.
@ -128,7 +122,7 @@ CONTAINER ID IMAGE COMMAND CREATED STATUS
ssh -L 33333:127.0.0.1:63003 rogrut@v2202306200871231373.supersrv.de ssh -L 33333:127.0.0.1:63003 rogrut@v2202306200871231373.supersrv.de
``` ```
#### Port öffnen ohne Login in Shell ### Port öffnen ohne Login in Shell
Um zu verhindern, dass man eingeloggt wird, also nur den Port 33333 zu öffnen, müssen noch zusätzliche Parameter angegeben werden: `-LNf`, also `ssh -LNf 33333:127.0.0.1:3306 rogrut@v2202306200871231373.supersrv.de` Um zu verhindern, dass man eingeloggt wird, also nur den Port 33333 zu öffnen, müssen noch zusätzliche Parameter angegeben werden: `-LNf`, also `ssh -LNf 33333:127.0.0.1:3306 rogrut@v2202306200871231373.supersrv.de`
Nicht vergessen den Port wieder zu schliessen. Nicht vergessen den Port wieder zu schliessen.
@ -153,6 +147,15 @@ und dann Prozess killen:
kill 9973 kill 9973
``` ```
## Remote Port Forwarding
Auch bekannt als "reverse tunneling", um von einem Host B eine sichere Verbindung auf einem lokalen Computer zu machen. Traffic wird von einem spezifischen port auf Host B an einen bestimmten Port auf dem Laptop geleitet.
To initiate remote port forwarding, the user configures an SSH connection to the remote server with the -R option followed by the forwarding specifications. The syntax for setting up remote port forwarding is:
```
ssh -R [remote_port]:[destination_address]:[local_port] [username]@[ssh_server]
```
## Dynamic Port Forwarding ## Dynamic Port Forwarding
### SSH Socks Proxy ### SSH Socks Proxy