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
- 使用指定的密鑰登錄
相關資料
本文对您有帮助?分享给更多朋友!
反馈与讨论
发现文档不全面、有错误却没时间编辑文档?想分享自己的经验或见解?欢迎在此留言、讨论。