当前位置: 首页 > 知识库问答 >
问题:

使用SSH java连接到数据库

羿宏硕
2023-03-14

我尝试用java连接到Oracle DB,但我遇到了错误,我搜索了很多次,我没有找到帮助我的东西。

当我尝试使用SQL developer连接时,它成功了。

因此,我尝试编写java代码来访问DB,它成功地连接到SSH,但当到达conn=drivermanager.getconnection时,我遇到了错误:

“java.sql.sqlException:Io异常:Oracle错误ORA-12650”

这是我的职能

public static Connection sshTunel() {
        String sshHost = "sshHost";
        String sshuser = "sshUser";
        String SshKeyFilepath =
            "pathOfKey";
        Session session;
        int localPort = 22;
        String remoteHost = "HostIp";
        int remotePort = 1521;
        String usr = "DB user";
        String pwd = "DB pass";
        try {
            java.util.Properties config = new java.util.Properties();
            JSch jsch = new JSch();
            session = jsch.getSession(sshuser, sshHost, 22);
            jsch.addIdentity(SshKeyFilepath, "ssh Pass");
            config.put("StrictHostKeyChecking", "no");
            config.put("Compression", "yes");
            config.put("ConnectionAttempts", "2");
            session.setConfig(config);
            session.connect();

            System.out.println("SSH Connected ...");

            int assinged_port =
                session.setPortForwardingL(localPort, remoteHost, remotePort);

            System.out.println("localhost:" + assinged_port + " -> " +
                               remoteHost + ":" + remotePort);
            System.out.println("Port Forwarded ...");
            try {
                Class.forName("oracle.jdbc.pool.OracleDataSource");

                conn =
DriverManager.getConnection("jdbc:oracle:thin:@remoteHost:1521/SID",
                            "DB User", "DB Pass");
            } catch (SQLException ex) {
                ex.printStackTrace();
                System.out.println("Error in connection");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn;
    }

共有1个答案

单喜
2023-03-14
    int localPort = 61521;
    String remoteHost = "HostIp";
    int remotePort = 1521;
    ...
    try {
        java.util.Properties config = new java.util.Properties();
        JSch jsch = new JSch();
        session = jsch.getSession(sshuser, sshHost, 22);
        ...
        session.setConfig(config);

        session.connect();

        System.out.println("SSH Connected ...");

        int assinged_port =
            session.setPortForwardingL(localPort, remoteHost, remotePort);

        System.out.println("localhost:" + assinged_port + " -> " +
                           remoteHost + ":" + remotePort);

        try {
            Class.forName("oracle.jdbc.pool.OracleDataSource");

            conn = DriverManager.getConnection(
                       "jdbc:oracle:thin:@localhost:61521/service_name",
                       "DB User", "DB Pass");
        } catch (SQLException ex) {
        ...
jsch.getSession(sshuser, sshHost, 22);
session.setPortForwardingL(localPort, remoteHost, remotePort);
jsch.getSession(sshuser, 'your_remote_host', 22);
session.connect();
session.setPortForwardingL(61521, 'localhost', 1521);
DriverManager.getConnection(
                   "jdbc:oracle:thin:@localhost:61521/service_name"

更令人困惑的是,屏幕截图显示了两个主机值的localhost。如果这是您真正拥有的,那么它就没有多大意义,您根本不应该需要SSH。因此,我假设您更改了真实值以隐藏它以便发布,并且只是选择了一个令人困惑的假值,而不是使用sshhosthostip或类似的值。

 类似资料:
  • 我想用客户端管理我的heroku数据库。到目前为止,我已经使用实现了这一点。当我使用中的数据使用连接de DB时,我获得: 连接到服务器时出错:致命:数据库“Postgres”的权限被拒绝详细信息:用户没有CONNECT特权。 有关于如何实现连接的指导吗?

  • 我无法连接到我的。这是代码: 我得到了这个信息: 在学校,这个例子是有效的。问题出在哪里??

  • 所以我正在尝试使用突出显示的连接进行连接。我使用密码'abcdefghijkl'登录到SQL环境。我正在尝试连接到名为“flight_school”的数据库 我的python脚本看起来就是这样。` 导入mysql.connector mydb=mysql.connector.connect(“localhost”,“root”,“abcdefghijkl”,“flight_school”“)打印(

  • 请知道,我对数据库很陌生。我能够正确安装mySQL和java连接器驱动程序。但每当我在eclipse中运行程序并尝试从我创建的数据库中检索信息时,我都会收到以下消息:“需要SSL连接,但服务器不支持”。下面是我要使用安全SSL连接运行的代码: `公共静态void main(字符串[]参数){

  • 问题内容: 我正在尝试从Windows 7中的Node.js连接到Oracle数据库。这可能吗?我尚未找到适用于Windows的Node.js插件。有建议的解决方法吗?我猜至少还有一个人想要在Windows上使用Node.js,并且需要连接到Oracle。如果需要的话,我愿意接受简单的解决方法。谢谢您的帮助。 问题答案: 您需要直接从Node.js连接到oracle吗?您可以用另一种语言编写数据库

  • 这是我的配置: Windows 7 64位 WAMP Server 2.2 64位与PHP 5.4.3(从官方网站下载)。 Firebird 1.5.6来管理数据库(我需要这个版本,因为新版本不打开我的数据库)。此程序只有32位版本(从官方网站下载)。 以下是连接到FDB数据库的代码。但是当我尝试代码时,我得到了错误:“致命错误:调用中未定义的函数ibase_connect() 我尝试: 激活ph