如何配置Rails以实现对远程数据库的无密码访问

注意:这类似于使用Ruby on Rails和SSH来访问远程服务器上的远程MySQL数据库 ,但OP没有提供太多信息,并且给出的唯一答案没有回答这个问题。

背景

我们最近将远程数据库从密码validation切换到基于ssh密钥的validation。 我已经validation我可以通过优雅的Sequel Pro图形数据库客户端使用以下设置访问数据库(某些名称有意混淆):

MySQL Host: woofwoof.us-west-2.rds.amazonaws.com Username: bowser Database: canine Port: 3306 SSH Host: salt.woofwoof.com SSH User: guardian SSH Key: ~/.ssh/id_rsa 

现在我需要Rails连接到同一个数据库,也使用基于ssh密钥的身份validation。

这个问题

我的config/database.yml文件中包含哪些内容?

到目前为止我有:

 canine: adapter: mysql2 database: canine username: bowser host: woofwoof.us-west-2.rds.amazonaws.com port: 3306 

…但是如何在config/database.yml文件中指定SSH HostSSH UserSSH Key

附加信息

回到我们的数据库进行密码validation时,以下工作:

 canine: adapter: mysql2 database: canine username: bowser password: *secret* host: woofwoof.us-west-2.rds.amazonaws.com port: 3306 

首先,您需要在MySQL服务器上建立SSH隧道。 在客户端计算机上,运行:

 ssh -fNg -L 3307:127.0.0.1:3306 guardian@salt.woofwoof.com 

这将建立到salt.woofwoof.com服务器的SSH隧道。 与localhost端口3307的任何连接都将通过隧道发送到端口3306上的远程主机。

然后像配置本地连接一样配置database.yml,但是指定转发端口3307:

 canine: adapater: mysql2 database: canine username: bowser password: *secret* port: 3307 

您可能还希望将ssh隧道设置添加到/ etc / inittab,以便在引导后建立隧道。 有关如何执行此操作的示例,请参见http://chxo.com/be2/20040511_5667.html 。