# Port über 2 oder mehr Server Forwarden

## bröggle

Hi,

vielleicht könnt ihr mir helfen.

Ich habe 3 Server:

Server 1, Server2, Server3

Auf Server 3 läuft ein Webserver auf port 80

Ich komme von außen aber nur auf Server 1, kann dann aber auf die anderen Server per ssh weiter. 

Server 3 ist nur über das lokale netz von server 2erreichbar.

Schematisch sieht das also so aus

ich 192.168.0.1, 80.80.81.123 (root)

Server1 217.217.217.1 ssh 

Server2 222.222.222.2, 192.168.1.2 ssh

Server3 192.168.1.3 ssh http und https

Wie kann ich nun per ssh Tunnel von mir auf den Webserver von server3 zugreifen?

Leider läuft auf keinem der Server iptables o.ä. und ich kann das dort auch nicht installieren und ich habe nur auf meinem eigenen Rechner root rechte, auf den anderen habe ich nur meinen normalen user account. (user123)

Könnt ihr mir da weiterhelfen?

Danke

----------

## amne

Ohne Garantie dass es funktioniert - die -v kannst du entfernen wenns geht.

```
ssh -v user1@host1 -L 44444:localhost:44444 -t "ssh user2@host2 -v -L 44444:localhost:44444 -t 'ssh user3@host3 -v -L 44444:localhost:80'"
```

Im Prinzip einfach 3 verschachtelte ssh sessions, die jeweilse die nächste aufmachen und immer Port 44444 mit weiterleiten und am ende auf Port 80 an den Webserver verbinden.

```
links http://127.0.0.1:44444
```

 sollte dann gehen.

----------

## bröggle

sehr gut, klappt  :Wink:  Da merkt man eben den Admin in dir  :Wink: 

Was macht man mit den Anführungsstrichen bei xxxxx Verbindungen?

2. Problem

ähnliche Ausgangssituation wie zuvor, nur jetzt muss ich von Server2 auf den port 80 von Server3 , aber ich habe für Server 3 keinen login. Geht das auch?

----------

## amne

 *bröggle wrote:*   

> sehr gut, klappt  Da merkt man eben den Admin in dir 

 

Hehe, danke.

 *bröggle wrote:*   

> Was macht man mit den Anführungsstrichen bei xxxxx Verbindungen?

 

Man verwendet xxxxx verschiedene Anführungszeichen. Oder man schreibt jeweils ein Einzeilerprogramm für jeden zu verschachtelnden ssh-Befehl. Oder es gibt sicher auch noch eine wirklich elegante Lösung, die mir jetzt nicht einfällt.

 *bröggle wrote:*   

> 2. Problem
> 
> ähnliche Ausgangssituation wie zuvor, nur jetzt muss ich von Server2 auf den port 80 von Server3 , aber ich habe für Server 3 keinen login. Geht das auch?

 

Bei Port-forwarding mittels -L or -R wird die Verbindung nur auf den Rechner weitergeleitet, also wenn müsste man hier auf z.B. Port 3128 weiterleiten wo dann ein Proxy (z.B. Squid) laufen müsste. 

Mit der Option -D (siehe auch DynamicForward in man ssh_config) kann man anscheinend ssh auch als Socks-Proxy agieren lassen, ich habs jetzt aber nicht wirklich zum funktionieren gebracht.

----------

## ph03n1x

Hmm was hackt ihr da?  :Very Happy: 

----------

## bröggle

schön wärs  :Wink: 

das 1. brauch ich für den pgadmin3, das klappt.

das 2. brauche ich für den maniac server meiner fh. und auf den kommt man nur über den login rechner vom RZ von meiner fh...

----------

## amne

Achja, die Triviallösung "Einloggen-und-dort-links-oder-lynx-starten" kann man natürlich auch erwähnen.  :Wink: 

----------

## bröggle

lynx kann leider kein javascript, das dort leider nötig ist ...  :Wink: 

Andere idee?

Und das rumschieben eines xfensters, klappt irgendwie nicht... :/ (gibt es da irgendeine Kernel einstellung die Portforwarding irgendwie dissabled? xhosts+ habe ich schon aus probiert...)

----------

## schmutzfinger

Also für den Tunnel braucht man kein login auf dem Rechner dessen port man gerne bei sich einblenden will.

Ich versuch mal mein Glück, ansonsten gibts ja noch manpages..

```

# port 80 von server3 auf port 4442 auf server2 legen

user@ich > ssh user2@server2 -R 4442:server3:80

# port 4442 von server2 auf port 4441 auf server1 legen 

user@ich > ssh user1@server1 -R 4441:server2:4442

# port 4441 von server1 auf port 80 auf ich legen 

user@ich > ssh user1@server1 -L 8080:localhost:4441

```

könnte falsch sein, habs nicht probiert. Man kann auch immer den selben port nehmen, aber ich persönlich mag das so, weil man besser sieht was man macht.

----------

## bröggle

hmmm aber ich kann ja von 'ich' nicht auf server2 direkt connecten... von daher wird  ssh user2@server2 -R 4442:server3:80  schon scheitern...

:/

kann man auch scp irgendwie durch tunneln?

Ich bräuchte ne datei von server3 und darf (bzw soll) auf server 2 nicht schreiben...

----------

