通过 SSH 隧道在 PostgreSQL 上进行身份验证失败
Ident authentication failed on PostgreSQL through SSH tunnel
我有 PostgreSQL 服务器,一台单独的计算机是它的客户端。他们在一个网络中。如果我使用像
这样的 psql 命令
psql --host db_ip_address --port 5432 --user user base_name
连接正常,一切正常。
但是如果我打开 SSH 隧道到数据库服务器,例如:
ssh -L 63333:localhost:5432 root@db_ip_address
然后尝试做同样的事情:
psql --host localhost --port 63333 --user user base_name
突然输出错误信息:
psql: FATAL: Ident authentication failed for user "user"
pg_hba.conf 在服务器上有这样几行:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 192.168.0.49/32 trust
host all all 192.168.0.50/32 trust
host all all 192.168.0.48/32 trust
# IPv6 local connections:
host all all ::1/128 ident
我需要使用 SSH 隧道,因为我自己的计算机实际上还需要一个隧道,这是获得数据库连接的唯一方法。
而且我不想更改任何配置或基于 PostgreSQL 服务器,因为它在实时服务器上工作。
希望得到帮助。
根据错误消息和 pg_hba.conf
,服务器将 localhost
解析为其 IPv6 地址,该地址绑定到 ident
身份验证。
作为解决方案,您可以:
更改 pg_hba.conf
以设置 ::1/128
的 trust
方法,就像 127.0.0.1/32
[=29 的情况一样=]
或运行psql --host 127.0.0.1 --port 63333 [other options]...
强制使用IPv4地址。
我有 PostgreSQL 服务器,一台单独的计算机是它的客户端。他们在一个网络中。如果我使用像
这样的 psql 命令psql --host db_ip_address --port 5432 --user user base_name
连接正常,一切正常。
但是如果我打开 SSH 隧道到数据库服务器,例如:
ssh -L 63333:localhost:5432 root@db_ip_address
然后尝试做同样的事情:
psql --host localhost --port 63333 --user user base_name
突然输出错误信息:
psql: FATAL: Ident authentication failed for user "user"
pg_hba.conf 在服务器上有这样几行:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 192.168.0.49/32 trust
host all all 192.168.0.50/32 trust
host all all 192.168.0.48/32 trust
# IPv6 local connections:
host all all ::1/128 ident
我需要使用 SSH 隧道,因为我自己的计算机实际上还需要一个隧道,这是获得数据库连接的唯一方法。 而且我不想更改任何配置或基于 PostgreSQL 服务器,因为它在实时服务器上工作。 希望得到帮助。
根据错误消息和 pg_hba.conf
,服务器将 localhost
解析为其 IPv6 地址,该地址绑定到 ident
身份验证。
作为解决方案,您可以:
更改
[=29 的情况一样=]pg_hba.conf
以设置::1/128
的trust
方法,就像127.0.0.1/32
或运行
psql --host 127.0.0.1 --port 63333 [other options]...
强制使用IPv4地址。