centos7 配置 sftp 服务器并通过 java 上传文件

简介: centos7 配置 sftp 服务器并通过 java 上传文件

虚拟机配置



1、创建sftp用户组

groupadd sftp


2、添加用户

useradd -g sftp mysftp


3、设置用户密码

passwd mysftp


4、创建文件根目录

mkdir /app/data


5、将该目录设置到用户上

usermod -d /app/data mysftp


6、修改配置文件

vim /etc/ssh/sshd_config


7、找到 Subsystem ,将之前的配置注释掉,增加新的配置

#注释掉下面一行,改用自定义的
#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp #这行指定使用sftp服务使用系统自带的internal-sftp
Match Group sftp #这行用来匹配用户组
ChrootDirectory /app/data  #用chroot将用户的根目录指定到/app/data ,这样用户就只能在/app/data 下活动
AllowTcpForwarding no
ForceCommand internal-sftp #指定sftp命令


8、创建属于该用户的访问目录并设置用户组

mkdir /app/data/upload
chown -R mysftp:sftp /app/data/upload/
mkdir /app/data/download
chown -R mysftp:sftp /app/data/download/


9、重启sshd服务

service sshd restart


10、通过任意的sftp连接工具测试连接

我这边使用的是 WinSCP

连接后能看到下图说明服务正常(无法跳转到 /app/data 以外的路径才对,保护资源)


e0a0a53b06ca4b78a780b0b736aaffe7.png


java 代码



1、测试代码


public static void main(String[] args) {
    JSch jSch = new JSch();
    Session session = null;
    Channel channel = null;
    OutputStream outputStream = null;
    InputStream inputStream = null;
    ChannelSftp channelSftp;
    String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
            "<Message>\n" +
            "    <Data>我是一个测试文件</Data>\n" +
            "</Message>\n";
    try {
        session = jSch.getSession("mysftp", "192.168.141.100", 22);
        session.setPassword("xxxxxx");
        Properties properties = new Properties();
        properties.setProperty("StrictHostKeyChecking", "no");
        session.setConfig(properties);
        session.connect(30000);
        channel = session.openChannel("sftp");
        channel.connect(30000);
        channelSftp = (ChannelSftp) channel;
        channelSftp.cd("/upload");
        outputStream = channelSftp.put("test.xml");
        inputStream = new ByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8));
        byte[] b = new byte[1024];
        int n;
        while ((n = inputStream.read(b)) != -1) {
            outputStream.write(b, 0, n);
        }
        outputStream.flush();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (null != outputStream) {
            try {
                outputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (null != inputStream) {
            try {
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (null != session) {
            session.disconnect();
        }
        if (null != channel && channel.isConnected()) {
            channel.disconnect();
        }
    }
}


2、执行完成后,会在服务器中的 upload 文件夹内生成一个 xml 文件

b340224f39cf4ce3aa2ef891443289a9.png

3、说明


在 java 程序中 cd 的路径不是服务器的绝对路径,而是以当前用户为起点的目录(channelSftp.cd("/upload");


这个路径可以在服务器中查看:

[root@root /]# sftp mysftp@127.0.0.1
mysftp@127.0.0.1's password: 
Connected to 127.0.0.1.
sftp> pwd
Remote working directory: /
sftp> 


其他



在 linux 服务器中查看 22 端口的连接情况(连接个数,ip)


netstat -anp | grep :22 | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n


这个命令的含义是:

netstat -anp:列出所有的网络连接

grep :22:筛选出SSH端口连接

grep ESTABLISHED:筛选出已经建立的连接

awk '{print $5}':提取出连接的IP地址和端口号

cut -d: -f1:只保留IP地址

sort:按IP地址排序

uniq -c:统计每个IP连接的个数

sort -n:按连接数排序,从少到多

相关文章
|
1月前
|
弹性计算 定位技术 数据中心
阿里云服务器配置选择方法:付费类型、地域及CPU内存配置全解析
阿里云服务器怎么选?2025最新指南:就近选择地域,降低延迟;长期使用选包年包月,短期灵活选按量付费;企业选2核4G5M仅199元/年,个人选2核2G3M低至99元/年,高性价比爆款推荐,轻松上云。
130 11
|
1月前
|
存储 弹性计算 监控
阿里云渠道商:如何挑选阿里云服务器配置?
本文详解通用型、计算型、内存型等实例适用场景,结合性能评估与成本优化策略,助力用户按需选择。以日均1万访问企业网站为例,2核4G+3M带宽月费约200元,性价比高。合理配置更省钱。
|
1月前
|
存储 弹性计算 网络协议
超详细的阿里云服务器购买流程,ECS自定义购买配置教程
本文详细图解阿里云ECS服务器自定义购买全流程,涵盖付费模式、地域选择、网络配置、实例规格、镜像、存储、安全组及登录设置等核心步骤,助您轻松掌握专业级云服务器搭建方法。
|
Linux
CentOS7.9服务器一键脚本部署FRP内网穿透服务端与客户端
CentOS7.9服务器一键脚本部署FRP内网穿透服务端与客户端
1293 1
|
XML 应用服务中间件 Linux
在一个centos服务器上同时部署tomcat,django,flask
在一个centos服务器上同时部署tomcat,django,flask
249 0
|
Java 应用服务中间件 Linux
Centos7云服务器部署Tomcat
Centos7云服务器部署Tomcat
Centos7云服务器部署Tomcat
|
数据采集 弹性计算 网络协议
[CentOS Python系列] 一.阿里云服务器安装部署及第一个Python爬虫代码实现
本文将详细讲解阿里云服务器如何安装及部署本地Python环境,并搭建代码。
1855 1
[CentOS Python系列] 一.阿里云服务器安装部署及第一个Python爬虫代码实现
|
弹性计算 Java Linux
CentOS7系统云服务器Java Web环境镜像部署操作演示
本篇文档介绍如何在ECS实例上使用镜像部署Java Web环境。
2867 0

热门文章

最新文章