使用ssh tunnel 来做代理或跳板
接前文
http://www.cnblogs.com/piperck/p/6188984.html ?使用ssh config配置文件來管理ssh連接
前文說了如何配置自己的ssh config 來方便的管理自己的ssh連接,以及如何使用ssh-add來將自己密鑰密碼存儲起來。接下將討論一下使用ssh來做轉發和跳板的相關實踐。
?
首先還是先說下這么一個情況:
我們的外部防火墻阻止了一些常用端口,現在打開的只有22 80 和443 也就是ssh http以及https服務可用,現在我可以通過和遠程主機建立tunnel 通過命令將本地的某個端口的流量通過tunnel轉發到遠程主機的指定端口上。
ssh -L 就是做這個事情的 例如 我想將本地的3306端口上的流量通過ssh23端口轉發到目標主機的9999端口上可以使用
ssh -L 3306:127.0.0.1:9999 target_host
同時這個命令耶可以使用ssh config寫法如下:
Host tokyo-hotHost target_hostLocalForward 9906 127.0.0.1:3306User: piperck
?
另外一個非常實用的,可以使用ssh來輕松越過墻
使用ssh -D命令可以直接代理到目標,而且目標將會自動監聽和轉發。支持socks4 socks5代理。ssh可以在此充當一個sock5代理服務器。指定一個端口,然后由這個端口作為socks代理服務器進行轉發。
ssh -TND 9999 piperck@target_server ?端口后面接目標ssh到的目標主機 即可建立一個簡易的sock5代理服務了。 如果你的機器是在墻外面,那么你將可以使用這條ssh tunnel FQ。流量會由9999端口進行代理轉發。
我理解的流量走的順序大概是,應用端口->指定端口代理服務器(9999)->ssh(22) ? >>>>>>>>>>>ssh(22)目標主機->代為訪問目標地址->原路返回數據。
?
這樣相當于將外部服務器做了一個跳板,從跳板上訪問另外的目標地址。 如果你喜歡 甚至可以嵌套ssh命令登陸多臺機器 類似:
ssh -A -t target_1 ssh -A -T target_2.....使用這種鏈條一路訪問下去(這里使用-A參數是因為 目標主機存儲的是 本地計算機的公鑰 如果不是存的本地公鑰而是target_1的公鑰可以去掉這個參數)。
另外還有一種方式可以實現這種連續跳轉的。
使用ssh -o ?ProxyCommand="ssh -W %h:%p jumphost.example.org" server.example.org
?
?大概解釋一下 ProxyCommand的-W參數 可以指定一個hostname:port參數
這里的jumphost.xx是跳板機的地址, 后面的server.xx是要去往的目標地址,同樣ProxyCommand允許使用config配置文件使得他變得更靈活
例如:
Host labHostName xcfapp-crontabUser piperckIdentityFile ~/.ssh/id_rsaProxyCommand ssh -W %h:%p jumphost.example.org這樣來實現。
ssh 還有非常多的細節可以去探索,暫時我使用到的就是這些,如果以后有更細的功能使用 可能會追加更多的內容。
?
Reference:
http://nerderati.com/2011/03/17/simplify-your-life-with-an-ssh-config-file/ ?Simplify Your Life With an SSH Config File
http://www.cnblogs.com/-chaos/p/3378564.html ?ssh -D -L -R 差異
http://www.cnblogs.com/piperck/p/6188984.html ?使用ssh config配置文件來管理ssh連接
https://heipei.github.io/2015/02/26/SSH-Agent-Forwarding-considered-harmful/ ?SSH-Agent-Forwarding-considered-harmful
https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Proxies_and_Jump_Hosts ?Proxies_and_Jump_Hosts
總結
以上是生活随笔為你收集整理的使用ssh tunnel 来做代理或跳板的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P4 前端编译器p4c-bm、后端编译器
- 下一篇: 解决Maven工程中报 Missing