简介
SFTP是SSH的一部分,在SSH软件包中,已包含SFTP的安全文件信息传输子系统,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接和答复操作。
类别 | SFTP | FTP |
---|---|---|
是否额外安装 | 不需要。linux默认安装ssh,有SSH即有SFTP | Linux默认不提供ftp,需要手动安装FTP服务器 |
安全 | 更高。在ftp的基础上加密传输认证信息、数据。需要用户名密码登录,也需要密钥加密。 | 比sftp略差。有可能要求基于密码的安全验证。 |
端口 | 通过SSH协议(TCP端口22)建立连接 | 通过TCP端口21上的控制连接建立连接 |
协议 | Secure File Transfer Protocol,SSH加密的文件传输协议 | File Transfer Protocol,文件传输协议 |
效率 | 传输效率比普通的FTP要低 | 较高 |
配置
用户权限配置
修改sftp配置的目的是:限制【特定用户】只能在【特定目录】的访问。1
比如:用户UserA,只能读取/data/usera,可以上传文件到/data/usera/upload。
java程序访问
依赖
使用第三方工具jsch包中的ChannelSftp类,来访问SFTP。
- 通过Ip、Port、Username、Password获取一个Session
- 通过Session打开SFTP通道(获得SFTP Channel对象)
- 再建立通道(Channel)连接
- 通过Channel对象来调用SFTP的各种操作方法
- 操作完SFTP需要手动断开Channel连接与Session连接
1 | <!-- https://mvnrepository.com/artifact/com.jcraft/jsch --> |
常见API
配置
1 | cms.file: |
工具文件
调用
1 |
|
工具文件
1 | package com.example.demoinit.sftp; |