我在远程 VPS 服务器 (CentOS 5) 上有一个 PostgreSQL 数据库,我想连接一个 Rails 应用程序,从我的本地 Mac 笔记本电脑连接到它。在我的笔记本电脑上,我安装了 ActiveRecord PostgreSQL 适配器 -postgres (0.7.9.2008.01.28)
.
我读到PostgreSQL 文档 http://www.postgresql.org/docs/8.1/interactive/auth-methods.html:
基于密码的认证方法有md5、crypt、password。这些方法的操作类似,只是通过连接发送密码的方式不同:分别是 MD5 散列、密码加密和明文。
[...]
如果您完全担心密码“嗅探”攻击,那么首选 md5...应避免使用纯密码,尤其是对于开放 Internet 上的连接(除非您在连接周围使用 SSL、SSH 或其他通信安全包装器)。
在标准 Rails 中database.yml
对于本地主机连接会有类似的东西......
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[电子邮件受保护] /cdn-cgi/l/email-protection-L 参数中的第一个数字,
3333,是你端的端口号
隧道的;可以选择
自由地。第二个数字 5432 是
隧道的远端:端口
您的服务器正在使用的编号。名字
或端口号之间的 IP 地址
是带有数据库服务器的主机
您将要连接到。为了
连接到数据库服务器
使用此隧道,您可以连接到端口
本地机器上的 3333:
psql -h localhost -p 3333 postgres 到
然后它会查看数据库服务器
就好像你真的是用户一样[电子邮件受保护] /cdn-cgi/l/email-protection它会使用任何东西
认证程序是
配置为从此连接
用户和主机。请注意,服务器
不会认为连接是
SSL 加密,因为事实上它不是
SSH 服务器和之间加密
PostgreSQL 服务器。这不应该
只要存在任何额外的安全风险
因为它们在同一台机器上。
如果您需要更多信息,可以通过搜索“SSL 隧道”或“postgres SSL 隧道”在线找到它。这是我获得上述内容的 Postgres 网站:
http://www.postgresql.org/docs/current/static/ssh-tunnels.html 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)