Reverse SSH Tunnelling Fehler?

1 Antwort

Hier ist die manpage von ssh.

Das hier dürfte der relevante Teil sein, der nicht für das gewünschte Verhalten führt.

-R
[...]
By default, TCP listening sockets on the server will be bound to the loopback interface only. This may be overridden by specifying a bind_address An empty bind_address or the address `*' , indicates that the remote socket should listen on all interfaces.

Wenn ich deinen Syntax richtig deute, sagt du ssh, dass der TCP Socket auf dem Server unter localhost (loopback Interface) horchen soll. Du wirst also nur auf meinem Server über Localhost darauf zugreifen können.

Du könntest entweder den Stern aus der manpage nutzen oder du trägst statt localhost deine Server IP Adresse ein.

Dann solltest du auch von außerhalb deines Servers den TCP Socket nutzen können.

tetris290 
Fragesteller
 07.01.2023, 23:05

Hey,

Danke für die schnelle Antwort, habe es jetzt so probiert:

ssh -N -R 90.206.38.138:4444:localhost:25565 root@90.206.38.138

Wenn ich "-R" weglasse:

ssh -N 90.206.38.138:4444:localhost:25565 root@90.206.38.138

kommt folgender Fehler:

ssh: Could not resolve hostname 90.206.38.138:4444:192.168.2.157:25565: Der angegebene Host ist unbekannt.

Klappt leider immernoch nicht :/

0
tide1109  08.01.2023, 00:43
@tetris290

Ich habe es jetzt selber mit einem anderen Service getestet.

Ein Satz weiter im manpage steht folgendes:

Specifying a remote bind_address will only succeed if the server's GatewayPorts option is enabled (see sshd_config5).

Auszug aus sshd_config5.

Zusammengefasst musst du du folgende Zeile in deine /etc/ssh/sshd_config auf deinem Server einfügen:

GatewayPorts clientspecified

Die Zeile dürfte egal. Überprüfe, ob es diesen Config Parameter kein zweites Mal aktiv in der Config gibt. Du kannst die Zeile dann entfernen oder mit # auskommentieren.

Im Anschluss musst du den SSH Server reloaden bzw. neustarten.

systemctl reload ssh

Dann wird der folgende Befehl auch funktionieren.

ssh -N -R 90.206.38.138:4444:localhost:25565 root@90.206.38.138

Zum überprüfen kannst du folgendes auf deinem Server ausführen.

netstat -tulpen

Du solltest in der Ausgabe eine Zeile mit ungefähr folgenden Inhalt finden:

tcp        0      0 90.206.38.138:4444      0.0.0.0:*               LISTEN      [...]

Du solltest auch überprüfen/testen, ob dein Minecraft Server auf localhost lauscht, bzw. erreichbar. Kannst du auf deinem PC, wo der Minecraft Server läuft, den Server per localhost beitreten? In der Minecraft server.properties gibt dazu die Zeile server-ip=.

Auch wenn jetzt der Port Forward über SSH läuft, könnte der Minecraft Server nicht extern erreichbar sein. Es könnte sein, dass der Minecraft Server auch das UDP Protokoll nutzt. SSH Port Forfwarding unterstützt nur TCP. Ich konnte keine offizielle und eindeutige Aussage über die Nutzung von UDP finden.

0
tetris290 
Fragesteller
 08.01.2023, 01:01
@tide1109

ES FUNKTIONIERT!!! DANKE

Ich hätte da noch eine weitere Frage, jetzt ist es so, dass ich eine Domain habe die hinter CloudNet liegt. IP:4444 funktioniert aber domain.de:4444 nicht, ich vermute dass das mit der Protection CloudFlares zu tun hat, gibt es aber einen Weg wie ich das trotzdem machen kann? Also so dass der Server IP nicht sichtbar ist und ich mich so vor Angriffen schützen kann?

0
tide1109  08.01.2023, 01:24
@tetris290

Ich kenne mich mit CloudNet nicht aus.

Wenn du bei deiner Domain ein A Record zu der IP Domain deines Servers einrichtest, wird es funktionieren. Die Domain wird zu deiner Server IP aufgelöst und der Minecraft kann antworten. Mit einem A Record kann die Server IP sehr leicht herausgefunden werden.

Für dieses Problem solltest du dich mit CloudNet beschäftigen und nachlesen wie es umgesetzt ist.

Ich könnte mir mögliche Ursachen vorstellen:

Hat dein Server noch eine andere IP Adresse, die dein Anbieter benutzt? Hast du eventuell eine Software auf deinem Server, die dann per localhost auf dein Minecraft Server zugreift?

Du könntest dein SSH Port Porward auf allen IP Adressen lauschen lassen.

ssh -N -R "*:4444:localhost:25565" root@90.206.38.138

Ein anderer möglicher Grund könnte IPv6 sein. Vielleicht leitet dein Dienst nur IPv6 weiter oder die fehlenden Unterstützung von IPv6 wird nicht erkannt und es wird nicht auf IPv4 gewechselt.

Ohne weitere Infos von CloudNet werden ich nicht helfen können.

0
tetris290 
Fragesteller
 08.01.2023, 02:18
@tide1109

Ehm srry ich habe mich verschrieben ich meine CloudFlare :C

0