使用JSCH框架通过跳转机访问其他节点

  之前搞了套远程访问ssh进行操作的代码,最近有需求,需要通过一台跳转机才能访问目标服务。在网上搜了半天,也没找到比较好的例子,就自己翻阅了下JSCH的API。但是看的云里雾里的。联想了下,端口转发的原理是否是把目标节点ip:port映射到localhost:port,然后通过localhost:port发送消息就可以抵达目标节点呢?

  带着这个推论,改造了下之前的代码。

原有代码通过jsch连接目标节点服务器这里就不多说了,自行百度,网上很多。

下面贴下改造之后的代码:

 1 /**
 2      * 获取连接
 3      * @param ip 跳转机host
 4      * @param userName 跳转机用户名
 5      * @param pwd 跳转机密码
 6      * @param port 跳转机端口
 7      * @return ChannelSftp 返回值
 8      * @throws JSchException 连接异常
 9      */
10     public static ChannelSftp connect(String ip, String userName, String pwd, int port) throws JSchException
11     {
12         if (port <= 0)
13         {
14             port = PORT;
15         }
16         Session sshSession = null;
17         JSch jsch = new JSch();
18         sshSession = jsch.getSession(userName, ip, port);
19         
20         sshSession.setPassword(pwd);
21         Properties sshConfig = new Properties();
22         sshConfig.put("StrictHostKeyChecking", "no");
23         sshConfig.put("PreferredAuthentications",
24                 "password,keyboard-interactive");
25         sshSession.setConfig(sshConfig);
26        
27         
28         sshSession.connect(TMOUT);//可设置超时时间  
29         //此处开始为端口映射到本地的部分
30         sshSession.setPortForwardingL(本地端口, 目标节点地址, 22);
31         //完成上诉映射之后,即可通过本地端口连接了
32         Session session = jsch.getSession("目标服务用户名", "127.0.0.1",本地端口);
33         Properties remoteCfg = new Properties();
34         remoteCfg.put("StrictHostKeyChecking", "no");
35         remoteCfg.put("PreferredAuthentications",
36                 "password,keyboard-interactive");
37         session.setConfig(remoteCfg);
38         session.setPassword("目标服务密码");
39         session.connect();
40         //后续如何可自行改变,网上运用很多
41         Channel channel = (Channel) session.openChannel("sftp");//创建sftp通信通道  
42         channel.connect();
43         ChannelSftp sftp = (ChannelSftp) channel;
44         
45         return sftp;
46     }
View Code

最后测试通过sftp访问目标节点的目录,成功

 

转载于:https://www.cnblogs.com/zpch/p/7999328.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值