当前位置:  开发笔记 > 后端 > 正文

ActiveRecord可以远程连接到PostgreSQL并保护数据库密码吗?

如何解决《ActiveRecord可以远程连接到PostgreSQL并保护数据库密码吗?》经验,为你挑选了1个好方法。

我在远程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" 这样的选项吗?



1> runako..:

无论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

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有