使用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-hot
    Host target_host
    LocalForward 9906 127.0.0.1:3306
User: 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 lab
    HostName xcfapp-crontab
    User piperck
    IdentityFile ~/.ssh/id_rsa
    ProxyCommand 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值