zoukankan      html  css  js  c++  java
  • 使用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 可以在此充当一个 socks5 代理服务器。指定一个端口,然后由这个端口作为 socks 代理服务器进行转发。

    ssh -TND 9999 piperck@target_server  即可建立一个简易的sock5代理服务了。 如果你的机器是在墙外面,那么你将可以使用这条 ssh tunnel 翻墙。

    流量会由 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

    https://dslztx.github.io/blog/2017/05/19/ssh%E5%91%BD%E4%BB%A4%E4%B9%8BProxyCommand%E9%80%89%E9%A1%B9/    ssh命令之ProxyCommand选项

  • 相关阅读:
    《JavaScript & jQuery交互式Web前端开发》之JavaScript基础指令
    hash_map原理及C++实现
    开源大数据引擎:Greenplum 数据库架构分析
    摆脱命令行,Ubuntu下配置Android开发环境
    JS学习十四天----server端运行JS代码
    【苦读官方文档】2.Android应用程序基本原理概述
    UVA
    android页面间传递对象
    大话设计模式C++版——建造者模式
    poj 3370 Halloween treats
  • 原文地址:https://www.cnblogs.com/piperck/p/6200439.html
Copyright © 2011-2022 走看看