SSH端口轉發(隧道)
此頁由 Linux Wiki用戶Chenxing 於 2012年2月5日 (星期日) 03:31 的最後更改。
從 Linux Wiki
提示:此文已超过 12 年(4668 天)未更新,如发现内容过时或有误,欢迎改进:)
SSH端口轉發(Port Forwarding),是一種隧道技術,流往某端口的數據被加密後傳向另一機器,依據轉發方式的不同,有多種應用場景。[1][2]
以下所有的命令都是用SSH客戶端執行的。執行命令的電腦下面稱為「本地」電腦;而「遠程服務器」則是運行着SSH服務器的機器(本文以my-remote-host.com為例)。
目錄 |
本地轉發
有時,遠程機器能訪問某個端口(如remote-secret.com:8080),但本地機器無法訪問。這時使用SSH的本地轉發功能,即可將遠程端口映射到本地:
ssh -L 9090:remote-secret.com:8080 my-remote-host.com
此時訪問本地的9090端口就相當於用遠程服務器my-remote-host.com訪問remote-secret.com:8080。
應用舉例:如果遠程服務器處於某受保護的內網中,可以藉助其SSH服務獲得與其等同的訪問權限。
遠程轉發
讓遠程服務器監聽remote_port端口,使其被訪問時像本地電腦在訪問somehost:its_port一樣。
ssh -R 9090:local-secret.com:8080 my-remote-host.com
這樣,訪問my-remote-host.com:9090就等同於用本機訪問local-secret.com:8080。
應用舉例:有時,本地電腦處於NAT內網中,難以從外部訪問;而遠程服務器可輕易被訪問。利用遠程轉發功能,可允許他人通過遠程服務器間接訪問本地電腦的某個端口。
注意:
類似本地轉發,遠程轉發的端口默認也只能在遠程服務器本機上訪問,要想允許外部訪問,可改寫為-R *:9090:local-secrent.com:8080,並確保在服務器的sshd_config中打開了GatewayPorts選項。
類似本地轉發,遠程轉發的端口默認也只能在遠程服務器本機上訪問,要想允許外部訪問,可改寫為-R *:9090:local-secrent.com:8080,並確保在服務器的sshd_config中打開了GatewayPorts選項。
動態轉發
動態轉發動態地將各種數據轉發到遠程端口。實際上相當於在本地電腦的指定端口開了一個SOCKS代理。如:
ssh -D 9090 my-remote-host.com
本地的9090端口就是一個SOCKS代理了。
常用參數
端口轉發常與以下參數配合使用[3]:
- -f
- ssh將在後台運行
- -N
- 不執行命令,僅轉發端口
- -C
- 壓縮傳送的數據
- -i
- 使用指定的密鑰登錄
相關資料
本文对您有帮助?分享给更多朋友!
反馈与讨论
发现文档不全面、有错误却没时间编辑文档?想分享自己的经验或见解?欢迎在此留言、讨论。