使用JavaJSCH的ssh隧道-Kerberos用户名[我的站点用户名]

使用JavaJSCH的ssh隧道-Kerberos用户名[我的站点用户名],java,mysql,ssh,Java,Mysql,Ssh,我的服务器上有一个mysql数据库,我想从其他站点的java应用程序访问它,我成功地通过mysql workbench访问了它,但当我尝试通过java连接时,使用以下代码,我无法访问数据库,控制台显示: [Ljava.lang.String;@466cb33cKerberos用户名[我的电台用户名]: 我在网上找到的代码是: public void connect() { // int assigned_port = 0; final

我的服务器上有一个mysql数据库,我想从其他站点的java应用程序访问它,我成功地通过mysql workbench访问了它,但当我尝试通过java连接时,使用以下代码,我无法访问数据库,控制台显示:

[Ljava.lang.String;@466cb33cKerberos用户名[我的电台用户名]:

我在网上找到的代码是:

 public void connect() {

        // 
        int assigned_port = 0;   
        final int local_port=3306;

        // Remote host and port
        final int remote_port=3306;
        final String remote_host="server's-ip";

        try {
            JSch jsch = new JSch(); 

            // Create SSH session.  Port 22 is your SSH port which
            // is open in your firewall setup.
            Session session = jsch.getSession("server's username", remote_host, 22);
            session.setPassword("server's password");

            // Additional SSH options.  See your ssh_config manual for
            // more options.  Set options according to your requirements.
            java.util.Properties config = new java.util.Properties();
            config.put("StrictHostKeyChecking", "no");
            config.put("Compression", "yes");
            config.put("ConnectionAttempts","2");

            session.setConfig(config);

            // Connect
            session.connect();            

            // Create the tunnel through port forwarding.  
            // This is basically instructing jsch session to send 
            // data received from local_port in the local machine to 
            // remote_port of the remote_host
            // assigned_port is the port assigned by jsch for use,
            // it may not always be the same as
            // local_port.

            assigned_port = session.setPortForwardingL(local_port, 
                    remote_host, remote_port);

        } catch (JSchException e) {            
          //  LOGGER.log(Level.SEVERE, e.getMessage()); return;
        }

        if (assigned_port == 0) {
           //.log(Level.SEVERE, "Port forwarding failed !"); 
            return;
        }

        // Database access credintials.  Make sure this user has
        // "connect" access to this database;

        // these may be initialized somewhere else in your code.
        final String database_user="db-user";
        final String database_password="db-password";
        final String database = "db-name";

        // Build the  database connection URL.
        StringBuilder url =
                new StringBuilder("jdbc:mysql://localhost:");

        // use assigned_port to establish database connection
        url.append(assigned_port).append ("/").append(database).append ("?user=").
                append(database_user).append ("&password=").
                append (database_password);

        try {
            Class.forName(
                    "com.mysql.jdbc.Driver").newInstance();
            java.sql.Connection connection =
                    java.sql.DriverManager.getConnection(url.toString());

            java.sql.DatabaseMetaData metadata = connection.getMetaData();

            this.connection = connection;
            this.statement = this.connection.createStatement();


        } catch (ClassNotFoundException |
                IllegalAccessException |
                InstantiationException |
                java.sql.SQLException e) {
          //  LOGGER.log(Level.SEVERE, e.getMessage());
        }

    }

您是否尝试使用相同的凭据连接ssh或putty?是的,但我不能100%确定每个参数的含义。