Ssh

如何通過反向 SSH 隧道做 SOCKS?

  • November 8, 2017

我有兩件事在工作,但我想做第三件事:我想使用一個具有動態 IP 的遠端 Raspberry Pi(執行 Raspbian)作為 SOCKS 代理進行沖浪。但我只能通過反向隧道訪問這個 Rpi。

所以我有:

  • 我的本地桌面(在動態 IP 後面)
  • 另一個國家的樹莓派(在動態 IP 後面)
  • 具有固定 IP 的專用伺服器

我可以完全控制所有這些機器,但不能控製本地桌面和遠端 Raspberry Pi 前面的路由器。

以下工作正常:

ssh -D 5222 m@aaa.bbb.ccc.ddd -N m@aaa.bbb.ccc.ddd

這允許使用 Firefox 或 Chromium 進行沖浪,就像我在 IP aaa.bbb.ccc.ddd 上的伺服器上沖浪一樣(我需要做的就是將 SOCKS 配置為使用 localhost 和埠 5222)。

以下也可以正常工作:

ssh -t m@aaa.bbb.ccc.ddd "ssh rspi@localhost -p 32402"

Raspberry Piautossh始終使用固定 IP 建立到伺服器的反向隧道(在這種情況下,我知道它在埠 32402 上:它告訴我當埠更改時它正在使用哪個埠,所以那裡沒有問題)。

因此,使用該“雙 ssh 命令”,我可以從本地桌面的終端控制我的 Rapsberry Pi,方法是通過具有固定 IP 的伺服器進行傳輸。

到現在為止還挺好。現在知道這兩個工作正常,我想知道讓我使用遠端 Raspberry Pi 作為 SOCKS 代理進行沖浪的神奇咒語(請記住,我總是知道 Raspberry Pi 建立反向 SSH 隧道的埠在)?

我應該在遠端 Raspberry Pi 或專用伺服器上進行任何修改/配置,還是只是從我的本地桌面正確設置的問題?

desktop$ ssh -J m@aaa.bbb.ccc.ddd -D 5222 -p 32402 rspi@localhost

嗯,這實際上就是所需要的。

如果您ssh的命令太舊-J,您可以用這兩個命令替換上面的行(在兩個終端中或使用-f -N將第一個放在後台的選項):

desktop$ ssh -L 32402:localhost:32402 m@aaa.bbb.ccc.ddd
desktop$ ssh -D 5222 -p 32402 rspi@localhost

-J選項只是避免在第二種舊方法中執行第一個命令的快捷方式。

引用自:https://unix.stackexchange.com/questions/403122