gpt4 book ai didi

java - 我无法使用 java 通过 ssh-tunnel 连接到数据库。

转载 作者:行者123 更新时间:2023-11-29 16:46:12 24 4
gpt4 key购买 nike

我有 sql-BD 和 ssh-tunnel。我想使用 Java 连接到此 BD

我使用的代码:

    Connection con = null;
JSch jsch = new JSch();

int localPort = 1234;

Session session = jsch.getSession(proxyUser, proxyHost, 22);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setPassword(proxyPassword);

session.setConfig("PreferredAuthentications", "publickey,keyboard-interactive,password");
session.connect();
session.setPortForwardingL(localPort, proxyHost, 3306);


Properties properties = new Properties();
properties.setProperty("user", user);
properties.setProperty("password", password);
properties.setProperty("useUnicode", "true");
properties.setProperty("characterEncoding", "UTF-8");
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection(
"jdbc:mysql://" + url + ":3306/" + nameBD + "?autoReconnect=true", properties);

错误行“无法创建与数据库服务器的连接。尝试重新连接 3 次。放弃”

执行此操作时出错:“con = DriverManager.getConnection(...)

请帮帮我

最佳答案

调试这样的东西可能最好用wireshark来完成。 ,这将使您能够看到线路上实际发生的情况,并快速找出不太正确的地方(tm)。如果您不熟悉该工具,有很多 tutorials周围可供选择。

我认为大多数情况下你只需要让东西匹配就可以了:

  • LocalPort 当前设置为 1234,但 DriverManager.getConnection正在尝试连接到 3306
  • 脚本片段不完整,因此我假设 url 设置为
    其他地方的 localhost/127.0.0.1 ...
  • jsch.getSessionsession.setPortForwardingL 都使用 proxyHost 作为目的地:我假设您的主机上有防火墙(这是为什么您使用 ssh),因此尝试本地连接到外部接口(interface)地址也可能会被阻止。这意味着 session.setPortForwardingL 也可能应该是 localhost/127.0.0.1。

关于java - 我无法使用 java 通过 ssh-tunnel 连接到数据库。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53102941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com