-
內網的服務器1上有網站,但是端口不開放,網站無法在公網上被訪問。但是,此內網服務器1本身可以訪問外網,於是可以通過ssh反向代理,讓內網服務器1首先連接另一臺端口可以在公網被訪問的服務器2,通過服務器2來訪問服務器1上的網站。
-
ssh 反向代理轉發的操作:
# 服務器2上 首先ssh登錄到公網主機,修改sshd的配置文件/etc/ssh/sshd_config GatewayPorts yes #(這一句是精髓) 重啓sshd,如下 service sshd restart # 服務器1上: ssh -p {服務器2ssh端口} -i {登陸的公鑰} -qTfNn -R {服務器2端口}:localhost:{服務器1端口} root@服務器2的ip -q, Quiet mode. Causes most warning and diagnostic messages to be suppressed -T, Disable pseudo-tty allocation. -f, 後臺執行 -N, 不執行命令 -n, Redirects stdin from /dev/null (actually, prevents reading from stdin) his must be used when ssh is run in the background. -R, 遠程端口轉發
當然爲了保持服務穩定,還要在內網主機上設置心跳信號來保持連接,修改內網主機的~/.ssh/config文件,增加
ServerAliveInterval 60 ServerAliveCountMax 9999999999
第一個參數表示如果服務器(外網)沒數據發來則過60秒客戶端(內網)會發送一個空包到服務器,以保持tcp長連接,默認值爲0,表示不會發心跳包,所以這裏設置爲60秒。 第二個參數表示,如果服務器(內網)沒有收到心跳包指定次數,就中斷連接。
於是就這樣運行了半個月,服務一直都有
參考
ssh轉發1[1]
ssh轉發實戰2[2]