一、SFTP是什么?
SFTP(SSH File Transfer Protocol)是一种基于SSH
(安全外壳)的安全的文件传输协议,使用SFTP协议可以在文件传输过程中提供一种安全的网络的加密算法,从而保证数据的安全传输
SFTP在Linux操作系统中,默认的端口是22,传输提供了密码和密钥验证机制,可以有效防止传输过程的威胁和公技
1.1 SFTP验证连接方式
-
账户密码验证:使用账户ID和密码进行验证,凭据验证过程中是加密的。
-
SSH密钥验证:通过SSH密码进行验证。
-
账户密码+SSH密钥混合验证:需要满足两种验证,才可以进行连接
1.2 SFTP文件传输过程
二、实现步骤
1、建立sftp连接
public void initSession(String sHost, int iPort, String sUserName, String sPassword) throws JSchException {
// JSch库来建立与SFTP服务器的连接
JSch jSch = new JSch();
this.session = jSch.getSession(sUserName,sHost,iPort);//getSession()建立与sftp服务器的会话
this.session.setPassword(sPassword);
this.session.connect();// 连接sftp服务器
}
2、设置传输参数
public void initChannelSftp() throws JSchException{
// 打开一个sftp通道,并将其转化为ChannelSftp对象
this.sftp = (ChannelSftp) this.session.openChannel("sftp");
this.session.connect();
}
3、打开本地文件
// 将要传输的文件打开为输入流
String localFilePath ="文件路径";
InputStream inputStream = new FileInputStream(localFilePath);
}
4、创建远程文件
// 在sftp服务器上创建远程文件
String remoteFilePath = "";
sftp.cd("")// 远程文件所在根目录
sftp.put(localFilePath, remoteFilePath)
5、上传文件
// 将本地文件写入到远程文件中
sftp.put(localFilePath, remoteFilePath)
6、关闭文件
inputStream.close()