使用ssh tunnel 来做代理或跳板
接前文
http://www.cnblogs.com/piperck/p/6188984.html ?使用ssh config配置文件來管理ssh連接
前文說了如何配置自己的ssh config 來方便的管理自己的ssh連接,以及如何使用ssh-add來將自己密鑰密碼存儲起來。接下將討論一下使用ssh來做轉(zhuǎn)發(fā)和跳板的相關(guān)實踐。
?
首先還是先說下這么一個情況:
我們的外部防火墻阻止了一些常用端口,現(xiàn)在打開的只有22 80 和443 也就是ssh http以及https服務(wù)可用,現(xiàn)在我可以通過和遠(yuǎn)程主機建立tunnel 通過命令將本地的某個端口的流量通過tunnel轉(zhuǎn)發(fā)到遠(yuǎn)程主機的指定端口上。
ssh -L 就是做這個事情的 例如 我想將本地的3306端口上的流量通過ssh23端口轉(zhuǎn)發(fā)到目標(biāo)主機的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命令可以直接代理到目標(biāo),而且目標(biāo)將會自動監(jiān)聽和轉(zhuǎn)發(fā)。支持socks4 socks5代理。ssh可以在此充當(dāng)一個sock5代理服務(wù)器。指定一個端口,然后由這個端口作為socks代理服務(wù)器進(jìn)行轉(zhuǎn)發(fā)。
ssh -TND 9999 piperck@target_server ?端口后面接目標(biāo)ssh到的目標(biāo)主機 即可建立一個簡易的sock5代理服務(wù)了。 如果你的機器是在墻外面,那么你將可以使用這條ssh tunnel FQ。流量會由9999端口進(jìn)行代理轉(zhuǎn)發(fā)。
我理解的流量走的順序大概是,應(yīng)用端口->指定端口代理服務(wù)器(9999)->ssh(22) ? >>>>>>>>>>>ssh(22)目標(biāo)主機->代為訪問目標(biāo)地址->原路返回數(shù)據(jù)。
?
這樣相當(dāng)于將外部服務(wù)器做了一個跳板,從跳板上訪問另外的目標(biāo)地址。 如果你喜歡 甚至可以嵌套ssh命令登陸多臺機器 類似:
ssh -A -t target_1 ssh -A -T target_2.....使用這種鏈條一路訪問下去(這里使用-A參數(shù)是因為 目標(biāo)主機存儲的是 本地計算機的公鑰 如果不是存的本地公鑰而是target_1的公鑰可以去掉這個參數(shù))。
另外還有一種方式可以實現(xiàn)這種連續(xù)跳轉(zhuǎn)的。
使用ssh -o ?ProxyCommand="ssh -W %h:%p jumphost.example.org" server.example.org
?
?大概解釋一下 ProxyCommand的-W參數(shù) 可以指定一個hostname:port參數(shù)
這里的jumphost.xx是跳板機的地址, 后面的server.xx是要去往的目標(biāo)地址,同樣ProxyCommand允許使用config配置文件使得他變得更靈活
例如:
Host labHostName xcfapp-crontabUser piperckIdentityFile ~/.ssh/id_rsaProxyCommand ssh -W %h:%p jumphost.example.org這樣來實現(xiàn)。
ssh 還有非常多的細(xì)節(jié)可以去探索,暫時我使用到的就是這些,如果以后有更細(xì)的功能使用 可能會追加更多的內(nèi)容。
?
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
總結(jié)
以上是生活随笔為你收集整理的使用ssh tunnel 来做代理或跳板的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P4 前端编译器p4c-bm、后端编译器
- 下一篇: PostgreSQL 从源码找出哪些操作