2014年9月15日 星期一

[轉載] SSH port forward實例說明

由於最近滿常用到的,找到別人的講解,就備份一下 source: http://pank.org/blog/2009/04/ssh-tunnel--l--r.html 直接講範例比較容易了解 HostA 本地主機, Linux HostB 遠端主機, Linux HostC 其他主機 -L (Local Port Forwarding) 使用時機 情況一: HostA 可能因為防火牆關係無法直接連到 HostC, 但是可以連到 HostB, 想透過 HostB 連 HostC 情況二: HostB, HostC 都在同公司內, 在外點的 HostA 想建立一條安全的通道去連 HostC ssh -fgNL 7777:HostC:7777 user@HostB 建立 HostA:7777 經由 HostB 到 HostC:7777, 在 HostA 連 localhost:7777 就會通到 HostC:7777 -R (Remote Port Forwarding) 使用時機 情況一: HostB 可能因為防火牆關係無法直接連到 HostC, 但是可以連到 HostA, 想透過 HostA 連 HostC ssh -fNR 2222:HostC:22 user@HostB 建立 HostB:2222 經由 HostA 到 HostC:22 在 HostB 連 localhost:2222 就會通到 HostC:22 情況二: HostA 在 NAT 下, 但是又沒有權限在 Gateway 設 DMZ 或 Port Mapping, 想讓有 Public IP 的 HostB 能連進來 ssh -fNR 2222:127.0.0.1:22 user@HostB 在 HostB 連 localhost:2222 就可以連到 HostA:22 註1: root 權限才能使用 1023 以下的 Port, 一般 User 只能使用 1024 以上的 Port 註2: 在 Windows 下可以用 PuTTY 的 GUI 或 plink, 一樣有 -L -R 參數, 可參考 gslin 的 用 PuTTY 的 tunnel 安全地瀏覽網頁