首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JSch -如何使用PortForwarding L从远程服务器捕获流?

JSch是一个Java实现的SSH2协议库,用于实现远程服务器的连接和操作。它提供了一系列的API,可以方便地进行SSH连接、文件传输、端口转发等操作。

要使用JSch进行PortForwarding,可以按照以下步骤进行:

  1. 导入JSch库:首先需要在项目中导入JSch库,可以从官方网站下载最新版本的JSch,并将其添加到项目的依赖中。
  2. 创建JSch对象:使用JSch类的实例化对象,可以通过调用JSch jsch = new JSch();来创建一个JSch对象。
  3. 创建Session对象:通过JSch对象的getSession()方法创建一个Session对象,需要传入远程服务器的用户名、主机地址和端口号。例如:Session session = jsch.getSession("username", "hostname", port);
  4. 设置Session的属性:可以通过Session对象的setConfig()方法设置一些属性,例如设置连接超时时间、禁用主机密钥检查等。例如:session.setConfig("StrictHostKeyChecking", "no");
  5. 设置密码或密钥:根据需要,可以设置密码或密钥进行身份验证。如果使用密码,可以通过Session对象的setPassword()方法设置密码;如果使用密钥,可以通过Session对象的setKeyPair()方法设置密钥对。
  6. 建立连接:通过Session对象的connect()方法建立与远程服务器的连接。例如:session.connect();
  7. 创建Channel对象:通过Session对象的openChannel()方法创建一个Channel对象,需要指定通道类型为"forwarded-tcpip"。例如:Channel channel = session.openChannel("forwarded-tcpip");
  8. 设置Channel的属性:可以通过Channel对象的setInputStream()setOutputStream()setHost()setPort()等方法设置一些属性,例如设置输入输出流、目标主机和端口号。
  9. 建立通道:通过Channel对象的connect()方法建立通道。例如:channel.connect();
  10. 捕获流:通过Channel对象的getInputStream()getOutputStream()方法获取输入输出流,可以进行数据的读取和写入操作。
  11. 关闭通道和会话:使用Channel对象的disconnect()方法关闭通道,使用Session对象的disconnect()方法关闭会话。

总结:使用JSch进行PortForwarding,首先需要创建JSch对象和Session对象,然后设置连接属性和身份验证方式,建立连接后创建Channel对象并设置属性,最后通过通道获取输入输出流进行数据的传输。最后记得关闭通道和会话。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Java 基础篇】Java网络编程:实现远程文件访问与管理

文件上传与下载 3.1 文件下载 要从远程服务器下载文件,我们需要使用输入流来读取远程文件的内容,并使用输出将内容写入本地文件。...然后,我们使用一个循环输入流中读取数据,并将其写入输出,直到文件下载完成。 3.2 文件上传 要上传文件到远程服务器,我们需要将本地文件的内容读取到输出中,然后发送给服务器的输入流。...然后,我们使用循环输入流中读取数据并将其写入输出,从而完成文件的上传。 4. 列出远程目录 有时,我们需要列出远程目录中的文件和子目录,以便进行文件管理。...以下是一个示例,演示了如何使用SSH协议删除远程服务器上的文件: import com.jcraft.jsch.*; public class RemoteFileAccess { public...在每个示例中,我们都使用了try-catch块来捕获可能的IOException或其他异常,并进行适当的处理。 7. 总结 通过本文,我们深入探讨了如何使用Java实现远程文件访问与管理。

50220

使用Jsch进行安全的文件上传及下载

本文介绍在Java中如何使用基于SSH的文件传输协议(SFTP)将文件本地上传到远程服务器,或者将文件在两个服务器之间安全的传输。...我们先来了解一下这几个协议 SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。比如:我们购买的云服务器登陆的时候使用的协议都是ssh。...文件传输 – JSch例子 2.1 get与put方法 在中JSch,我们可以使用put和get在服务器之间进行文件传输。put方法用来将文件本地系统传输到远程服务器。...channelSftp.put(localFile, remoteFile); get方法将文件远程服务器下载到本地系统。...jsch.addIdentity("/home/zimug/.ssh/id_rsa"); 2.4 完整JSch文件传输示例 将文件本地系统传输到远程服务器1.2.3.4,并使用SSH密码登陆方式进行身份验证

2.8K20
  • sftp使用方法_sftp服务

    SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。...在sftp的环境下的操作就和一般ftp的操作类似了,ls,rm,mkdir,dir,pwd,等指令都是对远端进行操作,如果要对本地操作,只需在上述的指令上加‘l’变为:lls,lcd, lpwd等。...* @param password 远程要连接的服务器的密码 * @param ip 远程服务器ip * @param port 远程服务器的ssh服务端口 * @return...* destDirPath 远程服务器要保存的文件夹路径 * file 本地要推送的文件对象 * username 远程服务器的用户名 * password 远程服务器的密码 * ip 远程服务器...如何在window下配置ssh服务,这又是另一个话题了。这次测试中,我用的是Cygwin工具。具体怎么使用,网上一搜一大把。

    5.4K20

    sftp常用命令介绍_手机命令代码

    File Transfer Protocol)是一种安全的文件传送协议,是ssh内含协议,也就是说只要sshd服务器启动了,sftp就可使用,不需要额外安装,它的默认端口和SSH一样为22。...", e); } } (3)基于OutputStream的调用 通过向put()方法返回的输出中写入数据的方式来保存文件,这种方式可以自定义输出的数据块大小(Jsch默认数据块大小为...", e); } } (2)基于OutputStream的调用 打开一个输出,将远程文件写入输出中。...如,通过FileOutPutStream得到一个本地文件输出,调用该方法将远程文件数据写入该输出,默认数据块大小为32KB。...", e); } } (3)基于InputStream调用 将远程文件数据转换成一个输入流,之后可以通过代码输入流中拿取数据 public InputStream download2InputStream

    3K20

    通过JSch运行远程linux主机上的shell脚本

    运行远程主机上的shell脚本 下面的例子是教给大家如何通过java程序,运行远程主机上的shell脚本。...首先通过maven坐标引入JSch依赖库,我们正是通过JSch去执行远程主机上的脚本。.../version> 当然以下java代码可执行的的前提是,远程主机已经开通SSH服务(也就是我们平时登录主机所使用的服务)。...并且在远程主机上,为这个脚本设置可执行权限,方法如下: $ chmod +x hello.sh 本地java程序 我们可以使用下面的代码,去远程的linux 主机执行shell脚本,详细功能请看代码注释...InputStream in = channelExec.getInputStream(); // 5 秒执行管道超时 channelExec.connect(CHANNEL_TIMEOUT); // 远程主机读取输入流

    2.2K00

    JSch - Java实现的SFTP(文件上传详解篇)

    它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序。   本文只介绍如何使用JSch实现的SFTP功能。   ...SFTP 为 SSH的一部份,是一种传输文件到服务器的安全方式。SFTP是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。...(来自百度的解释)   要使用JSch,需要下载它的jar包,请官网下载它:http://www.jcraft.com/jsch/ ChannelSftp类是JSch实现SFTP核心类,它包含了所有...可以向该输出中写入数据,最终将数据传输到目标服务器,目标文件名为dst,dst不能为目录。...指定文件传输模式为mode 并使用实现了SftpProgressMonitor接口的monitor对象来监控传输的进度。 offset指定了一个偏移量,输出偏移offset开始写入数据。

    12.9K11

    基于JSCH的简易服务监控服务-WatchDog

    需求: 程序出bug在所难免,为减少出问题时导致用户无法正常使用的时长过长,人工处理跟进以外,还需要24小时的监控服务,最好能够直接完成应急处理。...要实现从服务中控制重启其他服务,这里就需要引入Jsch(Java Secure Channel),功能简而言之就是以java的方式通过jsch连接,来对服务器进行操作,发送短信就是阿里云sms服务,引入调用即可...class SshContextConf { private String remoteHost; //远程连接服务器地址 private int remotePort...= 22; //远程连接服务器端口 private String userName ; // 远程连接的用户名 private String password; /...* * @param remotePort 被转发的远程端口 * @param localHost 转发后的服务器地址 * @param localPort

    1.1K10

    java使用jsch处理软链接判断是否文件夹

    因为使用jsch去读取文件的时候,有一些文件它是使用软链接制作的一个映射。因为这里面有一个问题。如果它是软链接你就无法判断他到底是文件。还是文件夹?...因为他没有提供可以直接读取的方法,用权限信息去判断,文件和文件夹都是l开头,所以这一篇博客的主要目的是介绍如何去处理软链接。判断是实际的文件还是文件夹。...遇到的问题Jsch的参数来看,首先这里他提供的一些Is link是为true的。但是判断是文件还是文件夹,全部都会frse,这个就比较苦恼了。一开始我还在想,他会不会没有提供对应的方法?...实际测试发现他是软件链接目录isDir和isFile方法都是false哦,我明白了在这种情况下,可以尝试使用SftpATTRS对象的getAttrs()方法来获取软链接路径,然后通过readlink()...示例代码以下是一个示例代码,演示了如何使用JSch库来获取软链接指向的实际文件或目录的属性信息:import com.jcraft.jsch.ChannelSftp;import com.jcraft.jsch.JSch

    26100

    jsch实现与服务器完成文件相关操作

    以前为了实现文件上传服务器的功能,于是在晚上搜了下,发现可以通过jsch来实现,同时发现jsch还是与服务器间通过一些命令完成其他操作,觉得不可思议,但是当时也没有过多的了解。...而这次需要完成服务器下拉文件,开始想到用ftp完成,但是发现借助客户端不是太好实现,或者确实不太了解这方面的知识,想到以前用过jsch,既然能够完成文件的上传,那么是否同样能够完成文件的下载呢?....txt","D:\\test",false); connection.close(); } 确实可以实现,单个文件的下载也就没什么问题了,当然往往实际业务不会这么简单,如果是目录中遍历下载文件会如何...下面来几个方面了解下。...上面在文件下载时,说到了遍历下载,如果文件较多或较大时,如何提高下载效率?同时如果下载过程出现问题,如何保证可靠性? 其他操作 按需补充

    1.9K40

    玩转SSH端口转发

    A1主机通过SSH登陆B1主机,指定不同的端口转发选项(-L、-R和-D),即可在A1与B1之间建立SSH隧道,从而进行不同的端口转发。...使用-L属性,就可以指定需要转发的端口,语法是这样的: -L 本地网卡地址:本地端口:目标地址:目标端口 通过本地端口转发,可以将发送到本地主机A1端口2000的请求,转发到远程云主机B1的3000...使用-R属性,就可以指定需要转发的端口,语法是这样的: -R 远程网卡地址:远程端口:目标地址:目标端口 这时,通过远程端口转发,可以将发送到远程云主机B1端口2000的请求,转发到本地主机A1...动态端口转发 应用场景: 远程云主机B1运行了多个服务,分别使用了不同端口,本地主机A1需要访问这些服务。 为啥需要动态端口转发呢?...链式端口转发 本地端口转发与远程端口转发结合起来使用,可以进行链式转发。假设A主机在公司,B主机在家,C主机为远程云主机。A主机上运行了前文的Node.js服务,需要在B主机上访问该服务。

    4.2K80
    领券