SSH 通過代理連接服務器
老規矩,先說結論:
或者:
注意:由于 macOS 版 Ncat 的 7.90 和 7.91 版本的 bug,上述方式不再生效。起碼 7.91 版本在 macOS 10.15.7 上是不行的。此問題在 7.92 版本中已經解決。
具體原因參見: https://nmap.org/changelog.html
但 Linux 上沒問題。所以增加個 socat 的替補方案:
Scout 本身很強大,但對代理的支持這部分貌似差一些,只支持 SOCKSv4 和 HTTP Proxy,不支持 SOCKS5。詳情參考 《socat 初窺門徑》 。
有些時候,由于網絡限制等原因,不能直接連通過 SSH 連到指定服務器,需要經過代理進行連接。例如如下場景:
其中,
client.net 不能直接訪問 rver.net
client.net 可以訪問 proxy.net
proxy.net 可以訪問 rver.net
使用 SSH 的 ProxyCommand 選項,配合 nc/Ncat 命令,實現 client.net 通過代理 proxy.net ,以 SSH 訪問 rver.net 。
(1) nc
macOS 上常用這種方案。但是 nc 不支持需要認證的代理。
常用參數:
(2) Ncat
Ncat 在 macOS 上通過代理連接時會出現連接斷開的情況。
常用參數:
以 nc 為例,如使用 Ncat 可以自行替換。
默認為 Socket5 代理,這時可以省略 -X 參數
或者采用另一種寫法:
SSH 配置文件位置:
增加如下兩行內容:以 nc 為例,如使用 Ncat 可以自行替換。
使用配置文件之后,就不需要在命令行中進行代理配置了。
對于大部分情況,都可以直接使用 nc 或者 Ncat 解決。但對于一些復雜情況,也可以通過其它方案完成。如在 macOS 上想通過需要認證的代理連接,用 nc 不支持代理認證, Ncat 又有些問題。
對于代理類型的問題,可以通過 Brook 來進行類型轉換。
1、 corkscrew
只支持 HTTP 代理
如需要訪問帶認證的代理服務器:
~/.ssh/myauth 的內容:
2、 proxytunnel
只支持 HTTP 代理
命令行里只填用戶名,會提示輸入密碼,或者通過環境變量傳入。
(完)
為什么我的windows 10沒有Ssh Proxy和Ssh Broker兩個服務
傳統的網絡服務程序,如:ftp、pop和telnet在本質上都是不安全的,因為它們在網絡上用明文傳送口令和數據,別有用心的人非常容易就可以截獲這些口令和數據。而且,這些服務程序的安全驗證方式也是有其弱點的,就是很容易受到“中間人”(man-in-the-middle)這種方式的攻擊。所謂“中間人”的攻擊方式,就是“中間人”冒充真正的服務器接收你的傳給服務器的數據,然后再冒充你把數據傳給真正的服務器。服務器和你之間的數據傳送被“中間人”一轉手做了手腳之后,就會出現很嚴重的問題。
SSH的英文全稱是Secure SHell。通過使用SSH,你可以把所有傳輸的數據進行加密,這樣“中間人”這種攻擊方式就不可能實現了,而且也能夠防止DNS和IP欺騙。還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替telnet,又可以為ftp、pop、甚至ppp提供一個安全的“通道”。
使用SSH代理
汗,其他人的回答怎么沒有搭邊的?
你把sshd的端口設為443或者80、53之類的端口,就可以經由公司代理了。
如果你指的是讓工具走8080的代理,putty是有proxy選項的,你仔細找找。
另外推薦Bitvi Tunnelier,它設置上級代理非常方便。
如果plink想走8080代理,可以使用類似ccproxy+proxycap之類的軟件。
有別的問題的話,給我發私信吧。
Chrome或Firefox怎么設置才能用SSH代理上網
尊敬的用戶,您好!很高興為您答疑。
使用SSH代理的話,在火狐瀏覽器下您需要下載安裝擴展:AutoProxy,相關的設置可以參閱:用ssh做firefox的代理和PLAYSSH教程:火狐瀏覽器(Firefox +AutoProxy)使用SSH代理的方法。
希望我的回答對您有所幫助,如有疑問,歡迎繼續咨詢我們。