通过ssh tunnel连接内网ECS和RDS

问题背景:

一些ECS没有访问公网的需求,或是RDS出于安全考虑只允许内网访问。但是希望远程连接这些ECS或RDS进行管理时就会比较麻烦,一般可以通过选一台有公网的ECS搭建v*n的方法来解决这个问题。但是搭建v*n有一定的技术门槛,需要有一定的网络基础,在配置的过程中会遇到很多问题。

这种情况下,可以通过SSH Tunnel的方式来简单的实现对内网ECS和RDS的访问。使用此方案不需要安装额外的软件,不需要配置路由转发,可以大大降低配置和使用的技术门槛。
通过ssh tunnel连接内网ECS和RDS

解决方案:

通过putty和 有公网IP的ECS之间建立ssh隧道,然后通过本地端口转发,实现在客户PC终端上对内网ECS和RDS的直接访问,为客户的远程管理提供了巨大的方便

配置方法:

1.前置条件:

  • 客户PC终端可以ssh登录有公网的ECS服务器。
  • 有公网的ECS服务器可以通过内网访问其他内网ECS服务器。
  • 有公网的ECS服务器可以通过内网访问RDS(ECS的内网IP在RDS的白名单中)

2.客户端配置:

  • 客户端使用putty,点击session,填写有公网ECS的IP及ssh端口
    通过ssh tunnel连接内网ECS和RDS

  • 点击ssh tunnel,Source Port是PC本地监听的端口。Destination填写内网ECS服务器的内网地址及端口。然后点击“Add”,就会生成一个端口转发记录,然后点击“Open”会打开SSH连接
    通过ssh tunnel连接内网ECS和RDS

  • 在弹出的窗口中输入正常SSH登录有公网IP的ECS服务器
    通过ssh tunnel连接内网ECS和RDS

  • 这时在客户PC终端上使用netstat -an命令应该可以看到一个127.0.0.1的22端口的本地监听。

  • 通过连接这个本地端口就可以连接到内网的ECS服务器上了。

  • 内网的的RDS也没有问题
    通过ssh tunnel连接内网ECS和RDS
    通过ssh tunnel连接内网ECS和RDS

  • 可以在客户PC终端直接使用数据库客户端程序来连接RDS中的数据库,非常方便。
    通过ssh tunnel连接内网ECS和RDS