我的 VPS 上有一个 MySQL 数据库,我只希望通过本地 IP 访问它(这样做没有问题),并且IroneWorkerRuby 应用程序可能会使用这些 AWS 东部 IP 中的任何一个。
到目前为止,我能想到的唯一方法是向 VPS 防火墙/iptables 添加一条规则,该规则仅允许所有AWS 东部 IP在 MySQL 端口上,并拒绝所有其他连接。
鉴于 IP 数量众多,有没有更好的方法来做到这一点?
注意:VPS 不在 AWS 上,因此使用其安全规则不是一个选项。
此外,仅向专门为 IronIO 访问创建的用户授予访问权限。
更新:根据 tadman 的建议,我得出的结论是建立远程 SSH 连接是最安全的途径。我找到了可以实现这一点的 Net::SSH 和 Net:SSH::Gateway 宝石,但我仍然不确定如何使用密钥身份验证来做到这一点,因此创建了这里有一个新的问题。
答案1
如果您能够使用 AWS 安全组: http://dev.iron.io/worker/reference/environment/#security_groups_and_ip_ranges
如果不是(尽管权限很宽): https://forums.aws.amazon.com/ann.jspa?annID=1701(AWS 东部区域)
遗憾的是,目前没有好的解决办法。亚马逊可以分配该范围内的几乎任何 IP
答案2
使用 SSH,您可以从每台需要访问数据库的计算机到远程计算机建立隧道。例如:
ssh -L 3306:localhost:3306 -f remote_database.host
该-L
选项指定要监听的本地端口以及要连接的远程地址和端口。在本例中,本地 3306 连接到您使用 SSH 连接的计算机上的远程 3306。
您可能需要确保您正在使用 SSH 公钥/私钥验证,并且如果出现问题,您有办法保持此隧道畅通。