我在远程VPS服务器(CentOS 5)上有一个PostgreSQL数据库,我想连接到我的本地Mac笔记本电脑连接到它的Rails应用程序.在我的笔记本电脑上,我安装了ActiveRecord PostgreSQL适配器 - postgres (0.7.9.2008.01.28)
.
我在PostgreSQL文档中读到:
基于密码的身份验证方法是md5,crypt和密码.除了通过连接发送密码的方式外,这些方法的操作类似:MD5散列,加密加密和明文.
[...]
如果您完全关注密码"嗅探"攻击,则首选md5 ...应避免使用普通密码,尤其是对于通过开放Internet进行的连接(除非您在连接周围使用SSL,SSH或其他通信安全包装).
在标准的Rails中database.yml
,对于localhost连接会有这样的东西......
development: adapter: postgresql database: journalapp_development username: xxx password: yyy host: localhost
但是PostgreSQL文档中讨论的身份验证方法没有任何内容.有没有像" auth_method: md5
" 这样的选项吗?
无论Postgres是否允许此功能,您都可以使用SSH隧道启用与远程数据库的安全连接.这是来自Web文档的无偿Stack Overflow粘贴:
首先确保SSH服务器在与PostgreSQL服务器相同的机器上正常运行,并且您可以使用ssh作为某个用户登录.然后,您可以从客户端计算机使用以下命令建立安全隧道:
ssh -L 3333:foo.com:5432 joe@foo.com -L参数中的第一个数字3333是隧道末端的端口号; 它可以自由选择.第二个数字5432是隧道的远程端:服务器正在使用的端口号.端口号之间的名称或IP地址是您要连接到的数据库服务器的主机.要使用此隧道连接到数据库服务器,请连接到本地计算机上的端口3333:
psql -h localhost -p 3333 postgres对于数据库服务器,它看起来好像你真的是用户joe@foo.com,它将使用为此用户和主机的连接配置的任何身份验证过程.请注意,服务器不会认为连接是SSL加密的,因为事实上它在SSH服务器和PostgreSQL服务器之间没有加密.只要它们位于同一台机器上,这不会造成任何额外的安全风险.
如果您需要更多,可以通过搜索"SSL隧道"或"postgres SSL隧道"在线找到它.这是Postgres网站,我得到了上述内容:
http://www.postgresql.org/docs/current/static/ssh-tunnels.html
要总结Rails,您将执行以下操作:
1)在终端窗口中,运行上面的第一个ssh命令建立隧道.
2)像这样设置数据库道具:
development: adapter: postgresql database: journalapp_development username: xxx password: yyy host: localhost port: 3333