Session是会话,比如打电话,从拨号到挂断这就是一个Session;Channel是通道,我的理解是比如打电话时,Channel表示是使用联通信号或者是移动信号或者是电信信号。
JSch是Java Secure Channel的缩写 JSch是一个SSH2的纯Java实现。它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序。
SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。SFTP 为 SSH的一部份,是一种传输文件到服务器的安全方式。SFTP是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。
要使用JSch,需要下载它的jar包,请从官网下载它:http://www.jcraft.com/jsch/
ChannelSftp类是JSch实现SFTP核心类,它包含了所有SFTP的方法,如:
put(): 文件上传
get(): 文件下载
cd(): 进入指定目录
ls(): 得到指定目录下的文件列表
rename(): 重命名指定文件或目录
rm(): 删除指定文件
mkdir(): 创建目录
rmdir(): 删除目录
JSch支持三种文件传输模式:
FTP和SFTP区别:
效率:FTP>SFTP
安全:SFTP>FTP
使用sftp代替ftp,好处是一、可以不用额外安装任何服务器端程序。二、会更省系统资源。三、SFTP使用加密传输认证信息和传输数据,相对来说会更安全。四、也不需要单独配置,对新手来说比较简单。
二者的区别在于FTP协议使用一个FTP服务器来对应多个FTP客户端。FTP客户端通过FTP协议在服务器上下载资源。而SFTP协议是在FTP的基础上进行数据加密,安全性提高了,理论上来说SFTP的传输效率比FTP要低
在linux服务器中,使用SFTP从性能、稳定性、速度各方面都要优于FTP
如何区分是需要使用SFTP还是FTP?
【】我觉得:
1、看是否已知私钥。
SFTP 和 FTP 最主要的区别就是 SFTP 有私钥,也就是在创建连接对象时,SFTP 除了用户名和密码外还需要知道私钥 privateKey ,如果有 私钥 那么就用 SFTP,否则 就是用 FTP。
2、看端口号。
如果端口号是21,那么就用FTP,否则就用 SFTP
Java实现对SFTP服务器的文件的上传下载
添加maven依赖:
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.54</version>
</dependency>