使用.NET中的SSH隧道连接到postgresql

时间:2016-12-14 18:23:53

标签: .net postgresql ssh tunneling

我尝试从Windows客户端连接到远程PostgreSQL服务器。 当我使用“Dbeaver”连接到数据库时,我需要填写网络连接(SSH)并连接好。

我正在开发一个VB.NET中的应用程序,它必须连接到数据库,但我不能使它成为可能的。

我使用Devart dll连接到数据库,Renci.SshNet dll连接到服务器。

我已经设法连接到服务器,显然是通过SSH,因为日志说,但当我尝试连接到DDBB时,它会抛出一个错误:

  

no hayunalíneainpg_hba.conf para“xx.xx.xx.xxx”,usuario“xxx”,base de datos“xxxx”,SSL inactivo

连接代码是下一个:

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”可以从我的PC连接,为什么我的应用程序不能?为什么我的服务器必须在pg_hba.conf中添加我的IP,如果没有“Dbeaver”运行?

1 个答案:

答案 0 :(得分:0)

(代表OP发布)

我的错误是将远程IP放在连接字符串中时必须是" 127.0.0.1":

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