致命:主机“::1”没有 pg_hba.conf 条目试图通过 ssh 隧道连接到 postgresql 服务器
Posted
技术标签:
【中文标题】致命:主机“::1”没有 pg_hba.conf 条目试图通过 ssh 隧道连接到 postgresql 服务器【英文标题】:FATAL: no pg_hba.conf entry for host "::1" trying to connect to postgresql server over ssh tunnel 【发布时间】:2018-11-09 12:58:54 【问题描述】:我正在尝试通过 SSH 隧道使用 java 连接到 postgresql 服务器。 我没有对 postgresql 服务器的管理员访问权限,因此无法修改任何设置。
这是我的代码:
public SSHConnection()
JSch jsch = new JSch();
//First ssh connection to the first domain (SERVER1_DOMAIN)
serverSession = jsch.getSession(USERNAME, SERVER1_DOMAIN, 22);
serverSession.setPassword(PASSWORD);
localUserInfo lui=new localUserInfo();
serverSession.setUserInfo(lui);
serverSession.setConfig(STRICT_HOST_KEY_CHECKING, NO);
System.out.println("Establishing Connection with "+SERVER1_DOMAIN);
//Port forwarding to the second domain (SERVER2_DOMAIN)
serverSession.setPortForwardingL(2233, SERVER2_DOMAIN, 22);
serverSession.connect();
System.out.println("Connection established with "+SERVER1_DOMAIN);
serverSession.openChannel("direct-tcpip");
//Creating second ssh session
dbstudSession = jsch.getSession(USERNAME, "localhost", 2233);
dbstudSession.setPassword(PASSWORD);
dbstudSession.setUserInfo(lui);
dbstudSession.setConfig("StrictHostKeyChecking", "no");
dbstudSession.connect(); // now we're connected to the secondary system
//Creating port forwarding from my system (6786) to postgresql port of SERVER2_DOMAIN over the ssh connection created above
dbstudSession.setPortForwardingL(6786,"localhost",5432);
System.out.println("Connection established with "+SERVER2_DOMAIN);
Class.forName("org.postgresql.Driver");
Connection connection = null;
//Trying to connect to the psql database
connection = DriverManager.getConnection("jdbc:postgresql://localhost:6786/databasename",USERNAME,PASSWORD);
connection.close();
当我运行它时,它正确地创建了两个 ssh 连接,但是我从 postgre 中得到了这个错误:
致命:主机“::1”、用户“taschinfed”、数据库“taschinfed”没有 pg_hba.conf 条目,SSL 关闭 在 org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:473) 在 org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:205) 在 org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) 在 org.postgresql.jdbc.PgConnection.(PgConnection.java:195) 在 org.postgresql.Driver.makeConnection(Driver.java:452) 在 org.postgresql.Driver.connect(Driver.java:254) 在 java.sql.DriverManager.getConnection(DriverManager.java:664) 在 java.sql.DriverManager.getConnection(DriverManager.java:247) 在 SSHConnection.connect(SSHConnection.java:65) 在 SSHConnection.(SSHConnection.java:54) 在 Main.main(Main.java:10)
我不知道该怎么办
编辑:我可以通过 windows power shell 轻松访问数据库,方法是创建到第一个域的 ssh 连接,以及从第一个域到第二个域的另一个 ssh 连接,然后使用 psql命令。这意味着ssh连接没有问题,实际上我可以从我的java代码访问服务器,但我不明白那个错误消息是什么意思。
【问题讨论】:
您忘记添加诸如如何设置 ssh 隧道、如何在 PostgreSQL 中配置listen_addresses
、netstat -an | grep 5432
在数据库服务器上的输出等详细信息。
我无权访问服务器设置,因此我没有在服务器上设置任何内容,也无法访问配置文件。我通过添加 netstat -an | 的结果来编辑问题。 grep 5432 命令
我找到了解决方案,出于安全考虑,我删除了 neststat 输出。但是,这个问题与它无关。现在我来写解决方案
【参考方案1】:
发现问题: 在行中
dbstudSession.setPortForwardingL(6786,"localhost",5432);
我用该服务器的实际地址 (SERVER2_DOMAIN) 更改了“localhost”,一切正常。我仍然不明白问题可能是什么。
【讨论】:
一种解释是您没有配置 IPv6,但localhost
仍解析为 ::1
。那将是网络配置错误。以上是关于致命:主机“::1”没有 pg_hba.conf 条目试图通过 ssh 隧道连接到 postgresql 服务器的主要内容,如果未能解决你的问题,请参考以下文章
org.postgresql.util.PSQLException:致命:主机没有 pg_hba.conf 条目
heroku Postgres - 续集:主机没有 pg_hba.conf 条目
PostgreSQL:pg_hba.conf中的MD5身份验证给我致命:用户“ postgres”的对等身份验证失败]] << [
Azure Postgres:主机“0.0.0.0”、用户“用户名”、数据库“订单”、SSL 上没有 pg_hba.conf 条目