使用JSCH框架通過跳轉(zhuǎn)機訪問其他節(jié)點的方法
之前搞了套遠程訪問ssh進行操作的代碼,最近有需求,需要通過一臺跳轉(zhuǎn)機才能訪問目標(biāo)服務(wù)。在網(wǎng)上搜了半天,也沒找到比較好的例子,就自己翻閱了下JSCH的API。但是看的云里霧里的。聯(lián)想了下,端口轉(zhuǎn)發(fā)的原理是否是把目標(biāo)節(jié)點ip:port映射到localhost:port,然后通過localhost:port發(fā)送消息就可以抵達目標(biāo)節(jié)點呢?
帶著這個推論,改造了下之前的代碼。
原有代碼通過jsch連接目標(biāo)節(jié)點服務(wù)器這里就不多說了,自行百度,網(wǎng)上很多。
下面貼下改造之后的代碼:
/**
* 獲取連接
* @param ip 跳轉(zhuǎn)機host
* @param userName 跳轉(zhuǎn)機用戶名
* @param pwd 跳轉(zhuǎn)機密碼
* @param port 跳轉(zhuǎn)機端口
* @return ChannelSftp 返回值
* @throws JSchException 連接異常
*/
public static ChannelSftp connect(String ip, String userName, String pwd, int port) throws JSchException
{
if (port <= 0)
{
port = PORT;
}
Session sshSession = null;
JSch jsch = new JSch();
sshSession = jsch.getSession(userName, ip, port);
sshSession.setPassword(pwd);
Properties sshConfig = new Properties();
sshConfig.put("StrictHostKeyChecking", "no");
sshConfig.put("PreferredAuthentications",
"password,keyboard-interactive");
sshSession.setConfig(sshConfig);
sshSession.connect(TMOUT);//可設(shè)置超時時間
//此處開始為端口映射到本地的部分
sshSession.setPortForwardingL(本地端口, 目標(biāo)節(jié)點地址, 22);
//完成上訴映射之后,即可通過本地端口連接了
Session session = jsch.getSession("目標(biāo)服務(wù)用戶名", "127.0.0.1",本地端口);
Properties remoteCfg = new Properties();
remoteCfg.put("StrictHostKeyChecking", "no");
remoteCfg.put("PreferredAuthentications",
"password,keyboard-interactive");
session.setConfig(remoteCfg);
session.setPassword("目標(biāo)服務(wù)密碼");
session.connect();
//后續(xù)如何可自行改變,網(wǎng)上運用很多
Channel channel = (Channel) session.openChannel("sftp");//創(chuàng)建sftp通信通道
channel.connect();
ChannelSftp sftp = (ChannelSftp) channel;
return sftp;
}
最后測試通過sftp訪問目標(biāo)節(jié)點的目錄,成功。
以上這篇使用JSCH框架通過跳轉(zhuǎn)機訪問其他節(jié)點的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
WebSocket+Vue+SpringBoot實現(xiàn)語音通話的使用示例
本文主要介紹了WebSocket+Vue+SpringBoot實現(xiàn)語音通話的使用示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11
Java中實現(xiàn)Redis管道技術(shù)的代碼詳解
在高并發(fā)的應(yīng)用中,數(shù)據(jù)訪問性能往往是系統(tǒng)性能的關(guān)鍵瓶頸之一,Redis作為一款高性能的內(nèi)存數(shù)據(jù)庫,廣泛應(yīng)用于緩存、會話存儲等場景,然而,在某些需要執(zhí)行大量Redis命令的場景下,網(wǎng)絡(luò)往返延遲,Redis提供了管道技術(shù)解決這一問題,下面小編給大家詳細說說2025-04-04
springboot實現(xiàn)maven多模塊和打包部署
本文主要介紹了springboot實現(xiàn)maven多模塊和打包部署,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
如何使用Spring?Boot設(shè)置上傳文件大小限制
上傳文件是互聯(lián)網(wǎng)中常應(yīng)用的場景之一,最典型的情況就是上傳頭像等,下面這篇文章主要給大家介紹了關(guān)于如何使用Spring?Boot設(shè)置上傳文件大小限制的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-01-01
IntelliJ IDEA 2018 最新激活碼(截止到2018年1月30日)
這篇文章主要介紹了IntelliJ IDEA 2018 最新激活碼(截止到2018年1月30日)的相關(guān)資料,需要的朋友可以參考下2018-01-01
Java基礎(chǔ)開發(fā)之JDBC操作數(shù)據(jù)庫增刪改查,分頁查詢實例詳解
這篇文章主要介紹了Java基礎(chǔ)開發(fā)之JDBC操作數(shù)據(jù)庫增刪改查,分頁查詢實例詳解,需要的朋友可以參考下2020-02-02
SpringCloud升級2020.0.x版之OpenFeign簡介與使用實現(xiàn)思路
在微服務(wù)系統(tǒng)中,我們經(jīng)常會進行 RPC 調(diào)用。在 Spring Cloud 體系中,RPC 調(diào)用一般就是 HTTP 協(xié)議的調(diào)用。對于每次調(diào)用,都要經(jīng)過一系列詳細步驟,接下來通過本文給大家介紹SpringCloud OpenFeign簡介與使用,感興趣的朋友一起看看吧2021-10-10

