PostgreSQL用SSH端口转发密码问题

Jul*_*era 2 postgresql ssh forwarding

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

$ ssh someserver.com -L 5100:127.0.0.1:5432
Run Code Online (Sandbox Code Playgroud)

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

$ psql -h 127.0.0.1 -p 5100 -U postgres dbname
Run Code Online (Sandbox Code Playgroud)

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

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

ara*_*nid 8

当你说db只允许本地连接时:你需要区分"unix socket"连接和"TCP to localhost"连接,这些连接不是一回事,可能会有不同的对待.

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

是否需要密码的规则是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