• SSH TCP/IP隧道转移


    隧道转移方向

    Local(Outgoing)

    本地隧道端口转发远程应用端口

         -L local_socket:remote_socket

          对本地指定的TCP端口port的连接都将转发到指定的远程主机及其端
          口上(host:hostport)。工作方式是在本地端分配一个socket监听TCP
          端口。当监听到本地此端口有连接时,连接将通过安全隧道转发给
          远程主机(server),然后从远程主机(是server端)上建立一个到
          host:hostport的连接,完成数据转发。

          译者注:隧道建立在本地和远程主机(server端,即中间主机)之间,
          而非本地和host之间,也不是远程主机和host之间。

                 端口转发也可以在配置文件中指定。只有root用户才能转发特权端口

                 (小于1024)。

                 默认本地端口被绑定在GatewayPorts指令指定的地址上。但是,显式

                 指定的bind_address可以用于绑定连接到指定的地址上。如果设置

                 bind_address为"localhost",则表示被绑定的监听端口只可用于本地

                 连接(即该端口监听在回环地址上),如果不设置bind_address或设置

                 为"*"则表示绑定的端口可用于所有网络接口上的连接(即表示该端口

                 监听在所有地址上)。

    Remote(Incoming)

    远程隧道端口转发本地应用端口

     -R remote_socket:local_socket

                 对远程(server端)指定的TCP端口port的连接都就将转发到本地主机和

                 端口上,工作方式是在远端(server)分配一个套接字socket监听TCP端

                 口。当监听到此端口有连接时,连接将通过安全隧道转发给本地,然后

                从本地主机建一条到host:hostport的连接。

                 端口转发也可以在配置文件中指定。只有root用户才能转发特权端口

                 (小于1024)。

                 默认远程(server)套接字被绑定在回环地址上。但是,显式指定的

                 bind_address可以用于绑定套接字到指定的地址上。如果不设置

                 bind_address或设置为"*"则表示套接字监听在所有网络接口上。

                 只有当远程(server)主机的GatewayPorts选项开启时,指定的

                 bind_address才能生效。(见sshd_config(5))。

                 如果port值为0,远程主机(server)监听的端口将被动态分配,并且在

                 运行时报告给客户端。

    Dynamic(SOCKS4/5)

    动态代理端口,该代理将远程主机的网络代理到本地

         -D [bind_address:]port

          指定一个本地动态应用层端口做转发端口。工作方式是分配一个套接
          字监听在此端口,当监听到此端口有连接时,此连接中的数据将通过
          安全隧道转发到server端,server端再和目的地(端口)建立连接,目
          的地(端口)由应用层协议决定。目前支SOCK4和SOCK5两种协议,并且
          SSH将扮演SOCKS服务端角色。

                 只有root用户可以开启特权端口。动态转发端口也可以在配置文件

                 中指定。

                 默认情况下,转发端口将绑定在GatewayPorts指令指定的地址上,但

                 是可以显式指定bind_address,如果bind_address设置为"localhost",

                 则转发端口将绑定在回环地址上,如果bind_address不设置或设置为

                 "*",则转发端口绑定在所有网路接口上。

     

    隧道转移应用举例

    环境假设

    主机 网络域 有公网IP SSH
    Local_A 办公区 无/通过路由器共享上网 有客户端
    Local_B 办公区 无/通过路由器共享上网 windows服务器主机,未安装客户端
    Remote_C 云主机 服务端
    Remote_D 云主机 无/与Remote_C在同一内网 服务端

    场景假设1: Local_B 上有部署AD服务(LDAP),Remote_D 上的应用需要访问该AD服务

    LDAP的端口为389

    ssh -NR 0.0.0.0:1389:Local_B:389    root@Remote_C

    之后,Remote_D 便可以通过访问  Remote_C:1389 来访问 AD服务了。

    至于 389是否在公网公开,可以通过其它手段处理,不在本文讨论范围

     

    场景假设2:Remote_D 上有部署了机密服务,希望在办公区访问该服务

    假设该服务端口为:8080

    ssh -NL  0.0.0.0:7080:REMOTE_D:8080

    之后,办公区就可以通过访问 LOCAL_A:7080 来访问该机密服务了

     

    场景假设3:Remote_C 所在网络域部署了很多服务,网管很忙,没时间一个一个做转发,且服务还在不断增减

    这时,可能最需要是建设VPN,又不在本文讨论范围了。

    通过SSH 代理,也可以暂时实现。

    ssh -ND 0.0.0.0:1080  REMOTE_A

     之后,在办公区,就可以通过 SCOKS5代理 LOCAL_A:1080 来访问云主机上的所有服务了。

  • 相关阅读:
    could not load file or assembly "System.Web.Mvc...
    .Net利用cwbx.dll call AS400 program得到数据
    fastadmin 如何构建组合题--Cannot read property '0' of undefined
    fastadmin的前端js文件中api和event的区别,formatter的意思
    fastadmin是如何使用art-template的,以及如何在js模板中,嵌套JS模板
    学习fastadmin的新技巧:去git里面看文件的修改
    thinphp5,模型调用模型,和控制器调用模型的区别
    fa使用技巧+tp5技巧总结
    input autocomplete的作用是什么?
    fastadmin 实现标签的多选研究---基于fa的test案例,已经CMS中的标签写法
  • 原文地址:https://www.cnblogs.com/lyqf365/p/15867470.html
Copyright © 2020-2023  润新知