问题背景:
一些ECS没有访问公网的需求,或是RDS出于安全考虑只允许内网访问。但是希望远程连接这些ECS或RDS进行管理时就会比较麻烦,一般可以通过选一台有公网的ECS搭建VPN的方法来解决这个问题。但是搭建VPN有一定的技术门槛,需要有一定的网络基础,在配置的过程中会遇到很多问题。
这种情况下,可以通过SSH Tunnel的方式来简单的实现对内网ECS和RDS的访问。使用此方案不需要安装额外的软件,不需要配置路由转发,可以大大降低配置和使用的技术门槛。
解决方案:
通过putty和 有公网IP的ECS之间建立ssh隧道,然后通过本地端口转发,实现在客户PC终端上对内网ECS和RDS的直接访问,为客户的远程管理提供了巨大的方便
配置方法:
1.前置条件:
a)客户PC终端可以ssh登录有公网的ECS服务器。
b)有公网的ECS服务器可以通过内网访问其他内网ECS服务器。 c)有公网的ECS服务器可以通过内网访问RDS(ECS的内网IP在RDS的白名单中)2,客户端配置
a)客户端使用putty,填写有公网ECS的IP及ssh端口
b)设置ssh tunnel,Source Port是PC本地监听的端口。Destination填写内网ECS服务器的内网地址及端口。然后点击“Add”,就会生成一个端口转发记录,然后点击“Open”会打开SSH连接。
c)在弹出的窗口中输入正常SSH登录有公网IP的ECS服务器
d)这时在客户PC终端上使用netstat -an
命令应该可以看到一个127.0.0.1
的22端口的本地监听。
e)通过连接这个本地端口就可以连接到内网的ECS服务器上了。
f)这个方法同样适用于windows系统(为了不与客户PC终端的端口冲突,这里使用了33389端口作为本地监听端口)
g)内网的RDS也没有问题
h)可以在客户PC终端直接使用数据库客户端程序来连接RDS中的数据库,非常方便。
在SecureCRT中这个功能叫做“端口转发”,进行类似的配置后也可以实现同样的功能。