亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過 Jsch 端口轉發的 Java 套接字連接

通過 Jsch 端口轉發的 Java 套接字連接

撒科打諢 2022-12-28 11:05:45
我正在嘗試通過本地端口轉發建立套接字連接。流程是:客戶端 --> SSHhost --> TargetHost試圖通過端口轉發來實現這一點,但不斷收到 IllegalStateException: Can't connect to rHost 錯誤。我測試過遠程主機確實直接接受連接,我的用例是通過 SSHhost 連接。不確定哪里出了問題,或者我愿意接受不同的方法或建議?謝謝。 try {        jsch.addIdentity(privateKeyPath);        session = jsch.getSession(username, hostL, port);        session.setConfig("PreferredAuthentications", "publickey,keyboard-interactive,password");        java.util.Properties config = new java.util.Properties();        session.setConfig(config);    } catch (JSchException e) {        throw new RuntimeException("Failed to create Jsch Session object.", e);    }    try {        session.connect();        session.setPortForwardingL(8080, rHost, rPort);        try (Socket s = new Socket()) {            s.connect(new InetSocketAddress(rHost, 8080), timeout);        } catch (Exception e) {            String errText = String.format("Can't connect to rHost")            throw new IllegalStateException(errText);        }        session.disconnect();    } catch (JSchException e) {        throw new RuntimeException("Error durring session connection );    }
查看完整描述

1 回答

?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

您需要更改以下行


s.connect(new InetSocketAddress(rHost, 8080), timeout);



s.connect(new InetSocketAddress("localhost", 8080), timeout);


因為你在使用該方法時實際上已經將本地主機端口 8080 映射到遠程主機端口session.setPortForwardingL(8080, rHost, rPort);


你可以試試這段代碼


try {


            jsch.addIdentity(privateKeyPath);

            session = jsch.getSession(username, hostL, port);

            session.setConfig("PreferredAuthentications", "publickey,keyboard-interactive,password");


            session.setConfig("StrictHostKeyChecking", "no");




            session.connect();


            session.setPortForwardingL(8080, rHost, rPort);

            Socket s = new Socket();

            s.connect(new InetSocketAddress("localhost", 8080), timeout);



            session.disconnect();

        } catch (JSchException e) {

            e.printStackTrace();

        } catch (Exception e) {

            e.printStackTrace();

        }


查看完整回答
反對 回復 2022-12-28
  • 1 回答
  • 0 關注
  • 190 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號