avv*_*avv 2 mysql ssh proxy rds
我们在Amazon AWS上托管了一个只读的MySQL数据库(prod镜像)作为RDS实例.我想远程访问它,但为了安全起见,只能通过白名单从办公室网络访问它.
当我在办公室时,我只是config/database.yml
指向生产镜,一切都很好.
但是,即使不在办公室,我也需要访问它,而不会严重损害安全性.
办公室里有一个物理服务器,我有ssh(key)访问权限,我可以通过它直接访问数据库,但是我不知道如何让rails通过它连接,以便我可以实际加载一个页面使用prod数据在我的笔记本电脑上使用rails(我无法在办公室服务器上运行rails).
我已尝试通过端口3306的基本ssh隧道和一般代理(运行mac os x),但正如预期的那样都没有工作.我们没有vpn,目前我们无法设置.只要安全性不会受到影响,我们就可以更改我们的AWS配置,但理想的解决方案只涉及某种形式的隧道和未来database.yml
.
(目前不方便的解决方法是每当我需要进行远程工作时手动将ip添加到白名单,然后将其删除!)
Gre*_*mpe 10
通过ssh隧道建立数据库连接应该可行,我已多次使用它.在你的Rails的配置一定要设置主机127.0.0.1
并没有 localhost
哪个MySQL驱动程序会区别对待.
示例设置:
在config/database.yml
:
development:
adapter: mysql2
database: yourdb
username: user
password: pass
host: 127.0.0.1
port: 8888
Run Code Online (Sandbox Code Playgroud)
你的ssh命令:
ssh -v -L 8888:your-db-endpoint.rds.amazonaws.com:3306 ec2-user@ec2-instance.amazonaws.com
Run Code Online (Sandbox Code Playgroud)
指定-v到ssh将在隧道使用时向您显示调试消息,这对于查看它是否有效非常有用.例如:
debug1: Connection to port 8888 forwarding to XXX.rds.amazonaws.com port 3306 requested.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3531 次 |
最近记录: |