SSH反向隧道


SSH 反向隧道(Reverse SSH Tunnel)是利用 SSH 建立的一种加密隧道,其作用是让处于防火墙或 NAT 后面的主机,可以将其内部的某个端口映射到外部服务器,使外部用户能够通过该服务器访问到内部服务。

最近在寻找一种低成本、本地化的通信方式,可以借助云服务器开放给外网的持续化服务方法,在种种限制下实现内网设备的高性能与低配置云服务器的平衡,个人了解到了SSH反向隧道这个技术,因此本篇主要介绍SSH反向隧道

1.应用场景

如下图,我们考虑这种情况:

  • 公网机器B可以被客户机器A和内网机器C通过ssh访问到
  • 希望通过公网机器B让客户端机器A访问到内网机器C
  • 内网机器C性能好,但没有公网ip
  • 公网机器B有公网ip且带宽足够
  • 客户端机器A希望可以持续访问内网机器的服务

例如:我希望在云服务器开放一个后端服务(计算向服务),但由于服务器性能不够,或者并发性难以支持,而升级服务器或租用额外的负载均衡服务成本又带来费用,但是本地内网有闲置PC可用,希望借助云服务器将本地内网的服务转发出去。

2.使用方法

  • 确保服务器有OpenSSH等服务
  • 公网机器B配置配置sshd_config文件:AllowTcpForwarding yes 和 GatewayPorts yes
  • 内网机器C上执行:ssh -R 8080:localhost:1234 user@<\server_ip>
  • 客户端机器A访问服务————http://<\server_ip>:8080

3.其他应用

  • 内网穿透
    例如,在远程维护或调试工作中,内网的设备可以通过建立一个反向隧道,使站外设备能够访问其内部服务。一些局域网游戏的联机服务可以考虑这种方法。

  • 远程访问和运维
    使用反向隧道从远程安全地访问位于防火墙或私有网络中的服务器,无需直接更改防火墙配置或暴露内网IP。

  • 安全加密通信
    因为SSH连接本身是加密的,所以通过SSH反向隧道传输的数据可以得到保护,减少了中间人攻击和数据泄露的风险。

  • 临时服务暴露
    当需要临时让外界访问某个内网服务时,通过反向隧道无需繁琐的网络配置变更,快速搭建一个临时的访问通道。