java sftp_JAVA 实现SFTP服务器功能
由于项目需要加密上传文件,使用Linux系统自带的SFTP服务很不方便。因此需要自己实现一套SFTP服务。这里使用的是Apache的开源软件MINA实现的SSHD协议。具体网址如下:http://mina.apache.org/sshd-project/embedding_ssh.html
需要引用一些Apache的开源架包,
服务器段具体实现如下
package com.song.SftpServer;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.sshd.SshServer;
import org.apache.sshd.client.UserAuth;
import org.apache.sshd.common.NamedFactory;
import org.apache.sshd.common.keyprovider.FileKeyPairProvider;
import org.apache.sshd.server.Command;
import org.apache.sshd.server.PasswordAuthenticator;
import org.apache.sshd.server.auth.UserAuthNone;
import org.apache.sshd.server.command.ScpCommandFactory;
import org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider;
import org.apache.sshd.server.sftp.SftpSubsystem;
import org.apache.sshd.server.shell.ProcessShellFactory;
public class SftpServer {
public static void main(String[] args)
{
// 工厂方法,使用默认属性创建ssh服务对象
SshServer sshd = SshServer.setUpDefaultServer();
sshd.setPort(4444);
String stest = "F:\\MyEclipse\\SFTPServer\\key.pem";
String []sKyepPath={stest};
// 保存会话安全校验信息,key.pem和key.ser为文件名
sshd.setKeyPairProvider(new FileKeyPairProvider(sKyepPath));
List> namedFactoryList = new ArrayList>();
namedFactoryList.add(new SftpSubsystem.Factory());
sshd.setSubsystemFactories(namedFactoryList);
sshd.setCommandFactory(new ScpCommandFactory());
sshd.setShellFactory(new ProcessShellFactory());
sshd.setPasswordAuthenticator(new Authcator());
try {
sshd.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
认证类package com.song.SftpServer;
import org.apache.sshd.server.PasswordAuthenticator;
import org.apache.sshd.server.session.ServerSession;
public class Authcator implements PasswordAuthenticator {
@Override
public boolean authenticate(String arg0, String arg1, ServerSession arg2) {
// TODO Auto-generated method stub
if(arg0.endsWith("song")&&arg1.endsWith("song"))
{
return true;
}
else
{
return false;
}
}
}
实现如下,使用FileZile可以成功连接服务器。在Linux服务器上不存在中文问题,唯一缺点就是暂时不支持中文解码,后续在研究。
java sftp_JAVA 实现SFTP服务器功能相关推荐
- 在Java中使用SFTP传输文件
1. 概述 在本教程中,我们将讨论如何在Java中使用SFTP从远程服务器上传和下载文件. 我们将使用三个不同的库:JSch.SSHJ 和 Apache Commons VFS来实现. 2. 使用 J ...
- java jsch api_详解Java使用Jsch与sftp服务器实现
在实际项目中常会遇到需要连接服务器获取文件的场景,如账务系统需要通过连接行方的sftp服务器拉取回单文件.本文将主要讨论使用Java中的jsch与sftp服务器实现ssh免密连接. 一.什么是SFTP ...
- Java从sftp服务器上传与下载文件
一.背景 业务需要从sftp服务器上上传.下载.删除文件等功能,通过查阅资料及手动敲打代码,实现了操作sftp的基本功能,有需求的小伙伴可以看看具体的实现过程. 二.sftp介绍 摘自百度百科:SSH ...
- Java从SFTP服务器下载文件一
最近对接一个需求,要用SFTP去服务器上取文件,这里记录下自己的思路. SFTP下载文件需要用到jsch的jar包,我用的是jsch-0.1.54.jar,可以到http://www.jcraft.c ...
- java ftp服务器_Java实现FTP服务器功能实例代码
FTP(File Transfer Protocol 文件传输协议)是Internet 上用来传送文件的协议.在Internet上通过FTP 服务器可以进行文件的上传(Upload)或下载(Downl ...
- java获得sftp目录_Java代码获取SFTP服务器文件
1 /** 2 *@authorshansm3 * @date 2020/3/18 -17:274 */ 5 public classSFTPUtil {6 7 private transient L ...
- channelsftp的put_JSch - Java实现的SFTP(文件上传详解篇)
public void put(String src, String dst) 将本地文件名为src的文件上传到目标服务器,目标文件名为dst,若dst为目录,则目标文件名将与src文件名相同. 采用 ...
- JSCH通过密码和公钥连接SFTP服务器的指纹判断以及Serv-U设置公钥登录
文章目录 (零)背景 (一)主机指纹 1.1 现象和原理 1.2 解决方法 1.2.1手动ssh 1.2.2 执行ssh-keyscan 1.2.3 程序用公钥登录 1.3 指纹变化 (二)JSCH程 ...
- Linux搭建ftp和sftp服务器
前言 FTP FTP(File Transfer Protocol,文件传输协议)是 TCP/IP 协议组中的协议之一,一般是为了方便数据共享的.FTP 包括一个 FTP 服务器和多个 FTP 客户端 ...
最新文章
- java jtable 单元格合并_JTable 单元格合并 【转】
- 如何使用Proxy模式及Java内建的动态代理机制
- 使用Packet.dll和npf.sys实现原始数据包的发送和接收
- esp8266环境搭建
- ssl初一组周六模拟赛【2018.4.14】
- HTML5教程之-文件拖拽功能实现
- k8s一个容器多个镜像_从零开始学K8s: 6.运行一个简单的容器
- 2021数学建模E题
- osm地图数据 mysql_GIS 地图数据的来源?
- 人大金仓驱动包kingbasejdbc8.6.0.jar V8驱动jar包
- 日志技术之JUL入门
- win10文件夹加密_专业的文件隐藏软件——文件夹隐藏精灵PC软件
- 如何设置Ubuntu键盘输入法框架为fcitx
- 奇数位升序偶数位降序的链表进行排序
- 推荐一个免费下载简历模板的网站
- 护士副高需要计算机考试吗,护士评副高什么要求
- 场效应管 - MOSFET
- 调取创蓝253国际短信验证码-代码示例2
- java字符串==_Java字符串(String)
- 火爆的人工智能项目都在这里了|Gitee项目推荐
热门文章
- 剑指offer——面试题34:丑数
- Leetcode 538.二叉树转换为累加树
- pytorch: torch.nn.functional.affine_grid(theta,size)
- 怎么解决vs2017一把鼠标放在Mat类上就卡死的问题
- phpstrom常用配置
- 海思uboot启动流程详细分析(二)
- 装饰器补充、三元表达式、生成式、匿名函数
- python之路第一天
- Linux格式化分区报错Could not start /dev/sda No such file or directory 解决办法
- 没关系,因为你是好人呀