举例说明三种类型的ssh隧道(qbit)

本地端口转发

  • 机器与网络状况

    qbit 的开发机为 Q(192.168.1.Q),
    想要访问主机 D(192.168.2.D) 上的 MongoDB(27017)
    Q 不能直连 MongoDB 192.168.2.D:27017
    Q 可以通过 ssh 访问主机 J(192.168.2.J)
    J 可以直连 MongoDB 192.168.2.D:27017
  • 机器与网络状况示意图
    举例说明三种类型的ssh隧道(qbit)_第1张图片
  • 在开发机 Q 上执行以下命令创建隧道

    # 参数 N: 只做端口转发,不执行远程命令
    # 参数 L: Local 本地转发
    ssh -NL 6666:192.168.2.D:27017 [email protected]
  • 在开发机 Q 上执行以下命令连接 MongoDB

    mongosh mongodb://localhost:6666

远程端口转发

  • 机器与网络状况

    qbit 的开发机为 Q(192.168.1.Q),
    想要将本机 6666 端口的服务暴露给主机 D(192.168.2.D) 访问
    D 不能直连 192.168.1.Q:666
    D 可以与主机 J(192.168.2.J)建立 TCP 连接
    J 可以与 D 建立 TCP 连接
    J 不可以主动向 Q 建立连接
    Q 可以通过 ssh 访问 主机 J
  • 机器与网络状况示意图
    举例说明三种类型的ssh隧道(qbit)_第2张图片
  • 在主机 J 上开放 /etc/ssh/sshd_config 配置里面的 GatewayPorts,否则只能监听 localhost
  • 在开发机 Q 上执行以下命令创建隧道

    ssh -NR 7777:192.168.1.Q:6666 [email protected]
  • 在主机 D 上执行以下命令访问 Q 机器 6666 端口的服务

    curl http://192.168.2.J:7777

动态端口转发

  • 动态端口转发主要用作 socks 代理
  • 机器与网络状况

    qbit 的开发机为 Q(192.168.1.Q),
    想要访问互联网主机 ip.sb 的 80 端口
    J 可以与 ip.sb 建立 TCP 连接
    Q 可以通过 ssh 访问 主机 J
  • 机器与网络状况示意图
    举例说明三种类型的ssh隧道(qbit)_第3张图片
  • 在开发机 Q 上执行以下命令创建隧道

    ssh -ND localhost:6666 [email protected]
  • 在主机 D 上执行以下命令访问 Q 机器 6666 端口的服务

    curl -x socks5h://localhost:6666 http://ip.sb
本文出自 qbit snap

你可能感兴趣的:(端口转发)