FATAL: нет записи pg_hba.conf для хоста ":: 1", пытающегося подключиться к серверу postgresql через ssh-туннель - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь подключиться к серверу postgresql с Java через туннель SSH.У меня нет доступа администратора к серверу 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:

FATAL: нет записи pg_hba.conf для хоста ":: 1", пользователь "taschinfed", база данных "taschinfed", отключение SSL на org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication (ConnectionFactoryImpl.java:473) в org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl (ConnectionFactoryImpl.java:205) в org.postgres0) в 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. (SSHConnec.tion.java:54) at Main.main (Main.java:10)

Я не знаю, что делать

Редактировать: я могу легко получить доступ к базе данных через WindowsPower Shell, создавая ssh-соединение с первым доменом и другое ssh-соединение из первого домена со вторым доменом, используя затем команду psql .Это означает, что с ssh-соединениями нет проблем, и на самом деле я могу получить доступ к серверу из своего java-кода, но я не понимаю, что означает это сообщение об ошибке.

1 Ответ

0 голосов
/ 31 мая 2018

Нашел проблему: В строке

dbstudSession.setPortForwardingL(6786,"localhost",5432);

я изменил «localhost» с фактическим адресом этого сервера (SERVER2_DOMAIN) и все работает.Я до сих пор не понимаю, в чем проблема.

...