使用JSCH框架通過跳轉(zhuǎn)機(jī)訪問其他節(jié)點(diǎn)的方法
之前搞了套遠(yuǎn)程訪問ssh進(jìn)行操作的代碼,最近有需求,需要通過一臺跳轉(zhuǎn)機(jī)才能訪問目標(biāo)服務(wù)。在網(wǎng)上搜了半天,也沒找到比較好的例子,就自己翻閱了下JSCH的API。但是看的云里霧里的。聯(lián)想了下,端口轉(zhuǎn)發(fā)的原理是否是把目標(biāo)節(jié)點(diǎn)ip:port映射到localhost:port,然后通過localhost:port發(fā)送消息就可以抵達(dá)目標(biāo)節(jié)點(diǎn)呢?
帶著這個推論,改造了下之前的代碼。
原有代碼通過jsch連接目標(biāo)節(jié)點(diǎn)服務(wù)器這里就不多說了,自行百度,網(wǎng)上很多。
下面貼下改造之后的代碼:
/**
* 獲取連接
* @param ip 跳轉(zhuǎn)機(jī)host
* @param userName 跳轉(zhuǎn)機(jī)用戶名
* @param pwd 跳轉(zhuǎn)機(jī)密碼
* @param port 跳轉(zhuǎn)機(jī)端口
* @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é)點(diǎn)地址, 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)上運(yùn)用很多
Channel channel = (Channel) session.openChannel("sftp");//創(chuàng)建sftp通信通道
channel.connect();
ChannelSftp sftp = (ChannelSftp) channel;
return sftp;
}
最后測試通過sftp訪問目標(biāo)節(jié)點(diǎn)的目錄,成功。
以上這篇使用JSCH框架通過跳轉(zhuǎn)機(jī)訪問其他節(jié)點(diǎn)的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java異常--常見方法--自定義異常--增強(qiáng)try(try-with-resources)詳解
這篇文章主要介紹了Java異常--常見方法--自定義異常--增強(qiáng)try(try-with-resources)的相關(guān)知識,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03
MybatisPlus?QueryWrapper常用方法實(shí)例
MyBatis-Plus(opens new window)是一個MyBatis(opens new window)的增強(qiáng)工具,在 MyBatis的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生,下面這篇文章主要給大家介紹了關(guān)于MybatisPlus?QueryWrapper常用方法的相關(guān)資料,需要的朋友可以參考下2022-04-04
java環(huán)境變量的配置方法圖文詳解【win10環(huán)境為例】
這篇文章主要介紹了java環(huán)境變量的配置方法,結(jié)合圖文形式詳細(xì)分析了win10環(huán)境下java環(huán)境變量的配置方法與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2020-04-04
Java使用備忘錄模式實(shí)現(xiàn)過關(guān)類游戲功能詳解
這篇文章主要介紹了Java使用備忘錄模式實(shí)現(xiàn)過關(guān)類游戲功能,結(jié)合實(shí)例形式詳細(xì)分析了java備忘錄模式的概念、原理及其在過關(guān)類游戲中的具體應(yīng)用方法,需要的朋友可以參考下2018-04-04

