【问题标题】:How to manage ssh session and mysql connection through a javaFx application?如何通过 javaFx 应用程序管理 ssh 会话和 mysql 连接?
【发布时间】:2019-05-16 05:48:40
【问题描述】:

我有几个并发 + 远程 Java/MySQL 连接到私有云服务器,在第一种方法中,我开始将这些连接(连接、查询、关闭连接)直接连接到服务器的公共 IP,它工作正常,但它是由于某些安全配置将使 MySQL 绑定保留为 localhost(将无法再使用公共 IP 访问它),这不是正确的方法。

所以我必须通过 SSH 隧道连接到 MySQL。我已经看到了一些关于“如何使用 java 制作这个”的回复,例如:

Connect to remote MySQL database through SSH using Java

Java SSH MySQL connection

这很清楚和可以理解,但是我仍然不明白是否每次需要打开和关闭 MySQL 连接时都必须打开和关闭 SSH 隧道,或者可能是什么使用 SSH 会话时可能会遇到的问题。

还非常感谢有关在何处以及如何存储 SSH 凭据的任何提示。到目前为止,我为 MySQL 用户使用 base64 将它们保存在 HKEY_LOCAL_MACHINE 上,但对于 SSH 凭据来说似乎不够安全。

【问题讨论】:

  • 他们说你在本地机器上创建了隧道,它会启动并打开。然后你将你的数据库连接指向本地端。如果您在隧道关闭的情况下运行程序,它将无法连接。
  • @mavriksc,所以 java 应用程序仍然指向服务器的公共 IP,隧道打开?
  • 没有。 java 应用程序将指向 sql://localhost:jdbcPort/... 运行应用程序的机器将通过服务器上的开放 ssh 端口从 localhost:jdbcPort 到 DbServer.com:MySqlPort 的隧道。跨度>
  • @mavriksc 非常感谢。您的 cmets 帮助我找到了解决方案。如果有人面临同样的困惑,我将在答案部分进一步解释。

标签: java mysql ssh


【解决方案1】:

首先,在这种情况下,我需要使用本地机器的一个未使用端口来配置将链接到我服务器的 3306 端口的端口。

我目前在 Windows 上工作时使用 PuTTY,还有其他适用于 Unix 的原生解决方案。

为了测试,我在 SSH > Tunnel 配置下使用我的 127:0:0:1 的 3307 端口链接到我的私有服务器的公共 IP 和端口 X:X:X:X:3306.

按照这些教程进行操作:

http://www.ytechie.com/2008/05/set-up-a-windows-ssh-tunnel-in-10-minutes-or-less/

https://www.youtube.com/watch?v=7YNd1tFJfwc

最后,我成功地连接到我在 MySQL Workbench 上配置为 127.0.0.1:3307 的私有服务器连接,同时保持 SSH PuTTY 隧道会话打开。

正如评论会话中所说,Java 代码将指向我的本地主机 127:0:0:1:3307,但将使用服务器的 MySQL 凭据在我的服务器的公共 IP 上运行只要 SSH 隧道是打开的。

我将继续进一步研究如何保持会话打开或刷新它以避免丢失连接错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-22
    • 2021-11-01
    • 1970-01-01
    • 2022-01-03
    • 2020-10-10
    • 2022-01-08
    • 2014-02-18
    • 2023-03-17
    相关资源
    最近更新 更多