无法通过 SSH-Tunnel 使用 JDBC 连接连接到 Azure DB

Failing to connect to Azure DB via SSH-Tunnel using a JDBC connection

我无法使用 JDBC 连接通过 SSH-Tunnel 连接到 Azure 数据库。 出于安全原因,我无法直接访问 Azure DB,但我有一个跳转服务器/隧道 VM,可以用来间接连接到 DB。

我缺少什么才能得到这个 运行?

Driver已使用:

测试程序:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class AzureDbTest {
  public static void main(final String[] args) throws SQLException {
    final String user = "db-user@mydb-server.database.windows.net";
    final String password = "password";
    final int portNumber = 1433;
    final String databaseName = "mydb";
    final String serverName = "127.0.0.1";
    final String url = String.format("jdbc:sqlserver://%s:%s;database=%s;user=%s;password=%s;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;",
        serverName, portNumber, databaseName, user, password);
    Connection connection = null;
    try {
      connection = DriverManager.getConnection(url);
      final String schema = connection.getSchema();
      System.out.println("Successful connection - Schema: " + schema);
    } catch (final Exception e) {
      e.printStackTrace();
    } finally {
      if (connection != null) {
        connection.close();
      }
    }
  }
}

数据库服务器的连接策略需要代理才能使用ssh隧道。

有关可用连接策略差异的详细信息,请参阅 Azure SQL Database and Azure Synapse Analytics connectivity architecture 文章。