Ssh

我需要 SSH 的反向代理解決方案

  • December 15, 2012

嗨,這是我在公司數據中心有一台伺服器用於項目的情況。我在埠 22 上可以通過 SSH 訪問這台機器。在這台伺服器上執行一些虛擬機,然後在許多其他作業系統正在執行的所有東西的後面。現在,由於我在數據中心防火牆後面,我的主管問我是否可以做一些事情,通過這些事情我可以讓 Internet 上的許多人直接訪問這些虛擬機。我知道如果我被允許在 22 以外的埠上獲取流量,那麼我可以進行埠轉發。但是由於我不允許這樣做,所以在這種情況下可以解決什麼問題。想要聯繫的人可能完全是白痴。他們可能只是在他們的機器上打開膩子就很開心,甚至可能是 filezilla。

我手中沒有防火牆,也沒有打開 22 以外的任何埠,事實上,即使我要求他們也不允許打開。2 次 SSH 不是我的主管想要的東西。

您應該打開從您的電腦到數據中心伺服器的 ssh 隧道。讓我們將其命名為“server1”。如果您使用的是openssh,您可以執行

ssh -L0.0.0.0:8080:localhost:8080 you_username@server1

這將打開從您的電腦在埠 8080 到伺服器埠 8080 的連接,並在其間跳過防火牆。假設您的 apache 正在偵聽埠 8080。埠轉發格式是偵聽 IP:本地埠:遠端地址:遠端埠。當然對於單個伺服器,您也可以使用

ssh -L0.0.0.0:8080:remote_server_address:8080 you_username@server1

請注意 -L 參數中的 localhost 是相對於 server1 的。換句話說,伺服器看到來自本地主機的連接,而實際上這些連接來自您的電腦通過 ssh 連接。

你還需要參數

AllowTcpForwarding yes

在伺服器的 ssh 配置中(通常是 /etc/ssh/sshd_config)。

之後,其他人可以通過 8080 埠連接到您的電腦,以通過 Apache 反向代理獲得連接。如果您需要通用代理(因此使用者可以選擇地址,而不僅僅是 Apache 配置中的特定地址),您應該在 server1 上安裝 squid 並使用 ssh 隧道連接到 squid 埠。

引用自:https://serverfault.com/questions/226952