使用JSCH框架通过跳转机访问其他节点的方法
2017-12-09 09:25
459 查看
之前搞了套远程访问ssh进行操作的代码,最近有需求,需要通过一台跳转机才能访问目标服务。在网上搜了半天,也没找到比较好的例子,就自己翻阅了下JSCH的API。但是看的云里雾里的。联想了下,端口转发的原理是否是把目标节点ip:port映射到localhost:port,然后通过localhost:port发送消息就可以抵达目标节点呢?
带着这个推论,改造了下之前的代码。
原有代码通过jsch连接目标节点服务器这里就不多说了,自行百度,网上很多。
下面贴下改造之后的代码:
/** * 获取连接 * @param ip 跳转机host * @param userName 跳转机用户名 * @param pwd 跳转机密码 * @param port 跳转机端口 * @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);//可设置超时时间 //此处开始为端口映射到本地的部分 sshSession.setPortForwardingL(本地端口, 目标节点地址, 22); //完成上诉映射之后,即可通过本地端口连接了 Session session = jsch.getSession("目标服务用户名", "127.0.0.1",本地端口); Properties remoteCfg = new Properties(); remoteCfg.put("StrictHostKeyChecking", "no"); remoteCfg.put("PreferredAuthentications", "password,keyboard-interactive"); session.setConfig(remoteCfg); session.setPassword("目标服务密码"); session.connect(); //后续如何可自行改变,网上运用很多 Channel channel = (Channel) session.openChannel("sftp");//创建sftp通信通道 channel.connect(); ChannelSftp sftp = (ChannelSftp) channel; return sftp; }
最后测试通过sftp访问目标节点的目录,成功。
以上这篇使用JSCH框架通过跳转机访问其他节点的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章推荐
- JQuery:通过noConflict()方法同时使用jQuery 和其他框架
- 使用Java反射机制实现访问其他类的私有方法
- 通过网页访问,后台不能使用ssh命令的解决方法
- JavaScript中访问节点对象的方法有哪些如何使用
- java 使用jsch.jar包通过sftp访问Linux服务器
- struts 2框架的使用和访问数据库的公共方法
- 【分享】 使用MacBook Pro共享网络让其他PC和手持设备通过wi-fi上网方法
- 在TypeScript中使用其他JS框架或库的方法
- 只让用户通过域名访问网站,使用IP不能访问的方法
- js中会使用到的一种表单遍历验证的方法,访问当前节点的兄弟节点
- Spring - Java/J2EE Application Framework 应用框架 第 16 章 通过Spring使用远程访问和web服务
- 阿里云 云解析使用方法/在阿里云ESC服务器解析域名并绑定服务器IP后上传文件通过域名访问步骤教程
- 使用.net 中的动态方法编程备忘录4(DynamicMethod 类的构造函数及访问其他类的私有成员)
- Android低阶之【chapter - 6】Handler结合网络访问的使用方法,通过Handler实现异步网络请求
- JQ和其他框架一起使用方法
- 使用Java反射机制实现访问其他类的私有方法
- c# 读取其他程序正打开的文件的时“正由另一进程使用,因此该进程无法访问该文件。"的问题解决方法
- Entity Framework 上下文在C#事务中间使用时,通过递归方法引入新构造的上下文访问入口导致错误
- 使用ADempiere 3.6.0 LTS的WEB访问以及其他的一些访问方法及工具(基于Ubuntu Desktop 12.04 LTS)