2016-04-06 44 views
2

我發現了類似的場景in this topic,但它引用了ssh,並且我需要將訪問權轉發給web服務器。使用SSH隧道轉發訪問防火牆後面的網站

它看起來像現在:

[私人服務器] - 後面通過公共IP不可用路由器和防火牆,訪問

[中間服務器] - 公網IP,端口打開

[用戶] - 通過網絡瀏覽器連接到中間服務器,想要從獲得網站ivate服務器

我已經做了:

ssh -N -R 8888:localhost:80 [email protected][middle server ip] 

現在我可以訪問中間服務器例如私人服務器。通過:

curl http://localhost:8888 

所以隧道工作正常。

的問題是,當我(作爲用戶)進入[中央服務器的ip]:8888,所有我收到是ERR_CONNECTION_REFUSED

我缺少什麼?某種端口重定向?任何幫助,將不勝感激!

回答

1

此行爲由選項GatewayPorts(默認爲off)控制。從手冊頁ssh_config

GatewayPorts

指定遠程主機是否允許連接到轉發客戶端端口。默認情況下,sshd(8)將遠程端口轉發綁定到環回地址。這可以防止其他遠程主機連接到轉發的端口。 GatewayPorts可用於指定sshd應該允許遠程端口轉發綁定到非環回地址,從而允許其他主機連接。參數可能是「否」,強制遠程端口轉發僅對本地主機可用,「是」強制遠程端口轉發綁定到通配符地址,或者「客戶端指定」允許客戶端選擇地址轉發是綁定的。默認值是「否」。

您需要也明確把

GatewayPorts yes 

sshd_config,並指定本地地址:

ssh -N -R [middle server ip]:8888:localhost:80 [email protected][middle server ip] 

ssh -N -R *:8888:localhost:80 [email protected][middle server ip] 
+1

它解決了這個問題,謝謝!我已經設置了GatewayPorts,但在[私人服務器]上設置了它,所以它沒有按照我的預期工作。 – Mark