一、JSch是Java Secure Channel的缩写。JSch是一个SSH2的纯Java实现。它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序。
本文只介绍如何使用JSch实现的SFTP功能。
SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。SFTP 为 SSH的一部份,是一种传输文件到服务器的安全方式。SFTP是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。
二、需要的依赖包pom.xml
<dependency> <groupId>jsch</groupId> <artifactId>jsch</artifactId> <version>0.1.8</version> </dependency>
三、sftp的访问,以及实现方式
import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; import java.io.*; import java.util.Properties; public class SftpFile { public static void main(String[] args) throws Exception { //声明JSCH对象 JSch jSch = new JSch(); //获取一个Linux会话 Session session = jSch.getSession("root", "10.0.40.98", 22); //设置登录密码 session.setPassword("密码"); //关闭key的检验 Properties sshConfig = new Properties(); sshConfig.put("StrictHostKeyChecking", "no"); session.setConfig(sshConfig); //连接Linux session.connect(); //通过sftp的方式连接 ChannelSftp channel = (ChannelSftp) session.openChannel("sftp"); channel.connect(); //上传文件 File file = new File("d:\\1.txt"); InputStream inputStream = new FileInputStream(file); channel.put(inputStream, "/root/file/2.txt"); //下载文件 OutputStream out = new FileOutputStream("d:\\4.txt"); channel.get("/root/file/1.txt", out); //关闭流 inputStream.close(); out.close(); } }
注意:这里是弄成sftp的方式,其他方式也可以通过这样的方式来实现。
四、Jsch中sftp提供的一些api
put(): 文件上传 get(): 文件下载 cd(): 进入指定目录 ls(): 得到指定目录下的文件列表 rename(): 重命名指定文件或目录 rm(): 删除指定文件 mkdir(): 创建目录 rmdir(): 删除目录