簡體   English   中英

如何在 IntelliJ IDEA 中使用 SSH 連接到 Oracle 數據庫

[英]How to connent to Oracle database with SSH in IntelliJ IDEA

我正在嘗試使用 SSH 配置數據源以從 IntelliJ 校外訪問數據庫。 配置如截圖所示,我得到了

[08006][17002] IO 錯誤:從讀取調用中得到減一,連接失效 30003 毫秒,認證失效 0 毫秒。 oracle.net.ns.NetException:從讀取調用中得到減一。

事實上,我已經成功地在 Java 程序中使用loginProxy()loginDB()連接到數據庫。 通過運行代碼,我知道 jdbcPort 應該是動態的,並且我認為這也是應該在“數據源和驅動程序”配置 window 的“常規”選項卡中的“端口”空白處填寫的內容。


那么問題來了,如果要填寫的Port是DYNAMIC怎么配置呢? 還是我做錯了什么,所以實際上應該有另一種方法?

另一個問題: String URL = "jdbc:oracle:thin:@" + jdbcHost + ":" + jdbcPort + "/" + database; 這里用的是什么URL格式? 它看起來不像 SID、服務名稱或 TNS,但它確實有效……有趣的是,當我將“/”替換為與 SID 格式匹配的“:”時,它不再有效了。 ..

    /**
     * Login the proxy. Do not change this function.
     * 
     * @return boolean
     */
    public boolean loginProxy() {
        if (getYESorNO("Using ssh tunnel or not?")) { // if using ssh tunnel
            String[] namePwd = getUsernamePassword("Login cs lab computer");
            String sshUser = namePwd[0];
            String sshPwd = namePwd[1];
            try {
                proxySession = new JSch().getSession(sshUser, proxyHost, proxyPort);
                proxySession.setPassword(sshPwd);
                Properties config = new Properties();
                config.put("StrictHostKeyChecking", "no");
                proxySession.setConfig(config);
                proxySession.connect();
                proxySession.setPortForwardingL(forwardHost, 0, databaseHost, databasePort);
                forwardPort = Integer.parseInt(proxySession.getPortForwardingL()[0].split(":")[0]);
                // 👆 forwardPort is set here, seems to be dynamic...
            } catch (JSchException e) {
                e.printStackTrace();
                return false;
            }
            jdbcHost = forwardHost;  // 👈 this is used in case of SSH connection, which is "localhost"
            jdbcPort = forwardPort;  // 👈 this is used in case of SSH connection
        } else {
            jdbcHost = databaseHost;
            jdbcPort = databasePort;
        }
        return true;
    }
    /**
     * Login the oracle system. Change this function under instruction.
     * 
     * @return boolean
     */
    public boolean loginDB() {
        String username = "myDBUsername";
        String password = "myDBPassword";

        /* Do not change the code below */

        String URL = "jdbc:oracle:thin:@" + jdbcHost + ":" + jdbcPort + "/" + database;

        try {
            System.out.println("Logging " + URL + " ...");
            conn = DriverManager.getConnection(URL, username, password);
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }

在此處輸入圖像描述

SSH/SSL - 數據源和驅動程序 - IntelliJ IDEA

在常規選項卡上,您需要指定真實的數據庫服務器主機名和端口,而不是 localhost。 在下一個選項卡上配置 SSH 隧道后,所有連接操作都將自動完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM