PostgreSQL用SSH端口转发密码问题

时间:2010-12-24 10:53:16

标签: postgresql ssh forwarding

我正在尝试将我的计算机连接到PostgreSQL数据库,该数据库只能在某些服务器上访问(db只允许本地连接)。我以为我可以像这样使用端口转发:

$ ssh someserver.com -L 5100:127.0.0.1:5432

然后连接到数据库,如下所示:

$ psql -h 127.0.0.1 -p 5100 -U postgres dbname

然而,问题是在服务器上没有密码,但当我尝试连接到转发端口时,它会要求我输入密码。当我把它留空时它返回“psql:fe_sendauth:没有提供密码”并且不允许我连接。

可能是什么原因?我的计算机上还有一个PostgreSQL实例,这会引起一些冲突吗?

1 个答案:

答案 0 :(得分:7)

当你说db只允许本地连接时:你需要区分“unix socket”连接和“TCP to localhost”连接,这些连接不是一回事,可能会有不同的处理方式。

要测试:在数据库服务器上,查看是否在psql命令行上添加-h 127.0.0.1会对是否可以连接产生影响。

是否需要密码的规则在pg_hba.conf中。可能是您的数据库服务器设置为对unix(“本地”)连接使用“ident”身份验证,因此您的Unix用户名将自动被接受为数据库用户名。由于该验证方法通常不适用于TCP / IP(“主机”)连接,因此必须使用其他方法 - 如果设置为“md5”,则需要密码。

您可能需要做的就是在本地连接时为数据库上的用户帐户设置密码:ALTER USER username PASSWORD 'password'。如果您希望避免在远程连接时始终提示输入密码,请写一个.pgpass文件以将其存储在您的客户端用户帐户中:http://www.postgresql.org/docs/9.0/interactive/libpq-pgpass.html