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选项

  • 相关阅读:
    Hadoop集群(三) Hbase搭建
    Hadoop集群(二) HDFS搭建
    Hadoop集群(一) Zookeeper搭建
    Redis Cluster 添加/删除 完整折腾步骤
    Redis Cluster在线迁移
    Hadoop分布式HA的安装部署
    Describe the difference between repeater, bridge and router.
    what is the “handover” and "soft handover" in mobile communication system?
    The main roles of LTE eNodeB.
    The architecture of LTE network.
  • 原文地址:https://www.cnblogs.com/piperck/p/6200439.html
Copyright © 2011-2022 走看看