375
技術社區[雲棲]
sshuttle:一個使用ssh的基於VPN的透明代理
sshuttle 允許你通過 ssh 創建一條從你電腦連接到任何遠程服務器的 VPN 連接,隻要你的服務器支持 python2.3 或者更高的版本。你必須有本機的 root 權限,但是你可以在服務端有普通賬戶即可。
你可以在一台機器上同時運行多次 sshuttle 來連接到不同的服務器上,這樣你就可以同時使用多個 VPN, sshuttle可以轉發你子網中所有流量到VPN中。
在Ubuntu中安裝sshuttle
在終端中輸入下麵的命令
sudo apt-get install sshuttle
使用 sshuttle
sshuttle 語法
sshuttle [options...] [-r [username@]sshserver[:port]] [subnets]
選項細節
-r, —remote=[username@]sshserver[:port]
遠程主機名和可選的用戶名,用於連接遠程服務器的ssh端口號。比如example.com、testuser@example.com、testuser@example.com:2222或者example.com:2244。
sshuttle 例子
在機器中使用下麵的命令:
sudo sshuttle -r username@sshserver 0.0.0.0/0 -vv
當開始後,sshuttle會創建一個ssh會話到由-r指定的服務器。如果-r被丟了,它會在本地運行客戶端和服務端,這個有時會在測試時有用。
連接到遠程服務器後,sshuttle會上傳它的(python)源碼到遠程服務器並執行。所以,你就不需要在遠程服務器上安裝sshuttle,並且客戶端和服務器端間不會存在sshuttle版本衝突。
手冊中的更多例子
代理所有的本地連接用於本地測試,沒有使用ssh:
$ sudo sshuttle -v 0/0
Starting sshuttle proxy.
Listening on (‘0.0.0.0′, 12300).
[local sudo] Password:
firewall manager ready.
c : connecting to server...
s: available routes:
s: 192.168.42.0/24
c : connected.
firewall manager: starting transproxy.
c : Accept: ‘192.168.42.106':50035 -> ‘192.168.42.121':139.
c : Accept: ‘192.168.42.121':47523 -> ‘77.141.99.22':443.
...etc...
^C
firewall manager: undoing changes.
KeyboardInterrupt
c : Keyboard interrupt: exiting.
c : SW#8:192.168.42.121:47523: deleting
c : SW#6:192.168.42.106:50035: deleting
測試到遠程服務器上的連接,自動猜測主機名和子網:
$ sudo sshuttle -vNHr example.org
Starting sshuttle proxy.
Listening on (‘0.0.0.0′, 12300).
firewall manager ready.
c : connecting to server...
s: available routes:
s: 77.141.99.0/24
c : connected.
c : seed_hosts: []
firewall manager: starting transproxy.
hostwatch: Found: testbox1: 1.2.3.4
hostwatch: Found: mytest2: 5.6.7.8
hostwatch: Found: domaincontroller: 99.1.2.3
c : Accept: ‘192.168.42.121':60554 -> ‘77.141.99.22':22.
^C
firewall manager: undoing changes.
c : Keyboard interrupt: exiting.
c : SW#6:192.168.42.121:60554: deleting
原文發布時間為:2015-05-28
本文來自雲棲社區合作夥伴“Linux中國”
最後更新:2017-05-22 11:31:49