Подключитесь к postgresql с помощью SSH-туннеля в .NET.

Я пытаюсь подключиться к удаленному серверу PostgreSQL из моего клиента Windows. Когда я подключаюсь к базе данных с помощью «Dbeaver», мне нужно заполнить сетевое соединение (SSH), и оно подключается нормально.

Я разрабатываю приложение в VB.NET, которое должно подключаться к базе данных, но я не могу сделать это возможным.

Я использую dll Devart для подключения к базе данных и dll Renci.SshNet для подключения к серверу.

Мне удалось подключиться к серверу, по-видимому, через SSH, потому что журнал говорит об этом, но когда я пытаюсь подключиться к DDBB, он выдает ошибку:

нет строки в pg_hba.conf для "xx.xx.xx.xxx", обычно "xxx", база данных "xxxx", SSL неактивен

Код подключения следующий:

Dim connectionInfo As New PasswordConnectionInfo(IP, USER, PASS)
    connectionInfo.Timeout = TimeSpan.FromSeconds(30)
    client = New SshClient(connectionInfo)
    client.Connect()
    Dim portFwld As New ForwardedPortLocal("127.0.0.1", Convert.ToUInt32(PORT_SSH), IP, Convert.ToUInt32(5432))
    client.AddForwardedPort(portFwld)
    portFwld.Start()
    Log(client.IsConnected)
    Log(portFwld.IsStarted)

client.IsConnected = true и portFwld.IsStarted = true

Ошибка здесь (при открытии):

Dim myConnection As PgSqlConnection = New PgSqlConnection()
                Try                   
                    myConnection.ConnectionString = "Server=" & IP & ";Port=5432;Database=" & BBDD_Postgre & ";User Id=" & USER & ";Password=" & PASS & ";"
                    myConnection.Open()

Я пробовал много комбинаций, но ни одна из них не сработала, и я не знаю, на что еще смотреть, я потерян. Я думаю, если "Dbeaver" может подключиться с моего ПК, почему мое приложение не может? почему мой сервер должен добавлять мой IP в pg_hba.conf, если без него работает "Dbeaver"?


person María Mateos López    schedule 14.12.2016    source источник


Ответы (1)


(Опубликовано от имени ОП).

Моя ошибка заключалась в том, что удаленный IP-адрес был помещен в строку подключения, когда он должен быть «127.0.0.1»:

myConnection.ConnectionString = "Server=127.0.0.1;Port=5432;Database=" & BBDD_Postgre & ";User Id=" & USER & ";Password=" & PASS & ";"
person Community    schedule 16.12.2016