SSH-Portweiterleitung

8

Ich möchte über einen öffentlich zugänglichen Server (öffentlich) eine Verbindung zu meinem Computer (lokal) hinter NAT herstellen.

Auf lokal:

ssh -g -R 8000:localhost:22 user@public

Dann in der Öffentlichkeit:

ssh -p 8000 user@public 

Aber ich bekomme error: Connection refused.

Wenn ich mich beim öffentlichen Server anmelde, kann ich überprüfen, ob der Tunnel funktioniert durch:

ssh -p 8000 localhost

Welches öffnet ssh auf dem lokalen Computer.

Vermute ich etwas falsches, dass der öffentliche Server als transparenter Proxy fungieren sollte? Oder wie man es so macht.

Mito
quelle

Antworten:

11

SSH-Remote-Port-Weiterleitungen binden aus Sicherheitsgründen standardmäßig an localhost / loopback. Es ist nicht oft vorzuziehen, anderen Hosts Zugriff auf Ihre weitergeleiteten Ports zu gewähren.

Um dieses Verhalten zu überschreiben, müssen Sie zwei Dinge tun:

  • Aktivieren Sie die GatewayPortsOption auf dem Server.
  • Geben Sie *auf dem Client eine Bindungsadresse oder eine Bindung an alle Adressen an.

    ssh -R \*:8000:localhost:22 user@public
    

Entferne das Sternchen, um sicherzustellen, dass deine Shell es nicht erweitert.

Dan Carley
quelle
0

Dies scheint eher ein Problem mit den Einstellungen auf dem öffentlichen Remotecomputer zu sein. Standardmäßig wurde beim Öffnen von shsh sshd (was vermutlich verwendet wird) die Einstellung GatewayPorts auf no gesetzt, wodurch die Weiterleitung von Remote-Ports gezwungen wird, nur localhost abzuhören.

Die Lösung wäre dann, Ihre / etc / ssh / sshd_config (oder eine gleichwertige) zu bearbeiten und GatewayPorts auf yes oder auf clientspecified zu setzen. Wenn Sie sich für die spätere Option entscheiden, müssen Sie stattdessen Ihre Tunnelanforderung in -R *: 8000: localhost: 22 ändern.

andol
quelle