工作需要,经常需要ssh到另外一个网络的登陆入口,再从入口跳转到其内部的一台主机,需要登陆两次。执行命令也就罢了,只要操作一次就可以一直使用 ssh会话,但如果scp拷贝文件就麻烦了,需要先scp到入口主机,再从入口主机拷贝。于是就想到用ssh隧道来搞定,参考下面步骤建立ssh隧道之后,执行scp -P 9000 user@localhost:/filename ./ 其中user为目的主机的用户名。

============参考资料的分割线=========== 使用 ssh tunnel 輕鬆穿越 firewall 限制 zz

在某些公司內,會限制只有port 80可以連線,那如果你要上 bbs or msn 不就沒則了… 透過ssh tunnel可以把封包重新加密打包,並透過指定的 port 連出去

在 Windows 上建立通道 詳細圖文說明可參考 Jamyy’s Weblog - PuTTY - SSH Tunnel 運用備忘

在 Linux 上建立通道 $ssh -N -f -L 9000:dst_server:1234 user@mid_server

-N 參數的用途是”不建立shell”

-f 參數的用途是”連線後執行於背景”

-L 把本機的9000透過 midserver 導到 dst_server 的 1234

輸入完密碼後即會回到原來的shell,建立Tunnel之後的操作就跟前面差不多了。 $ssh -N -f -D 1080 user@mid_server

-D 在本機port 1080 建立 sock ,然後 client app 連線時必須使用 sock 連接到本機 port 1080 支援sock proxy的程式,如:msn 可以用這種方式比較簡單,不需要額外設定 port forwarding


Simon Lee

My blog