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月前
HAProxy的高级配置选项-配置haproxy支持https协议及服务器动态上下线
文章介绍了如何配置HAProxy以支持HTTPS协议和实现服务器的动态上下线。
80 8
HAProxy的高级配置选项-配置haproxy支持https协议及服务器动态上下线
|
14天前
|
Ubuntu Linux
Linux服务器的自动启动可以在哪里进行配置?
Linux服务器的自动启动可以在哪里进行配置?
68 3
|
25天前
|
监控 应用服务中间件
Nagios 服务器 Nrpe 配置
Nagios服务器需安装NRPE并定义监控命令于`command.cfg`中。示例配置如下:`check_nrpe -H $HOSTADDRESS$ -c $ARG1$`。客户端配置文件如`192.168.149.128.cfg`可引用NRPE配置的命令,如`check_nrpe!check_load`以监控负载。监控HTTP关键词使用`check_http`命令加参数,如`-I`指定IP,`-u`指定URL,`-s`指定关键词,可在`command.cfg`中定义如`check_http_word`命令,并在主机配置文件中引用。
44 13
|
27天前
|
编解码 小程序
无影云电脑产品使用黑神话悟空之:游戏服务器更新/配置问题
该文档主要介绍了使用无影云电脑玩《黑神话:悟空》时可能遇到的问题及解决方法,包括游戏服务器更新、配置问题、画质建议及如何开启帧数显示等内容,并提供了详细的步骤指导与参考链接。
|
1月前
|
监控 安全 网络协议
快速配置Linux云服务器
快速配置Linux云服务器
|
23天前
|
Cloud Native Java 编译器
将基于x86架构平台的应用迁移到阿里云倚天实例云服务器参考
随着云计算技术的不断发展,云服务商们不断推出高性能、高可用的云服务器实例,以满足企业日益增长的计算需求。阿里云推出的倚天实例,凭借其基于ARM架构的倚天710处理器,提供了卓越的计算能力和能效比,特别适用于云原生、高性能计算等场景。然而,有的用户需要将传统基于x86平台的应用迁移到倚天实例上,本文将介绍如何将基于x86架构平台的应用迁移到阿里云倚天实例的服务器上,帮助开发者和企业用户顺利完成迁移工作,享受更高效、更经济的云服务。
将基于x86架构平台的应用迁移到阿里云倚天实例云服务器参考
|
21天前
|
编解码 前端开发 安全
通过阿里云的活动购买云服务器时如何选择实例、带宽、云盘
在我们选购阿里云服务器的过程中,不管是新用户还是老用户通常都是通过阿里云的活动去买了,一是价格更加实惠,二是活动中的云服务器配置比较丰富,足可以满足大部分用户的需求,但是面对琳琅满目的云服务器实例、带宽和云盘选项,如何选择更适合自己,成为许多用户比较关注的问题。本文将介绍如何在阿里云的活动中选择合适的云服务器实例、带宽和云盘,以供参考和选择。
通过阿里云的活动购买云服务器时如何选择实例、带宽、云盘
|
19天前
|
弹性计算 运维 安全
阿里云轻量应用服务器和经济型e实例区别及选择参考
目前在阿里云的活动中,轻量应用服务器2核2G3M带宽价格为82元1年,2核2G3M带宽的经济型e实例云服务器价格99元1年,对于云服务器配置和性能要求不是很高的阿里云用户来说,这两款服务器配置和价格都差不多,阿里云轻量应用服务器和ECS云服务器让用户二选一,很多用户不清楚如何选择,本文来说说轻量应用服务器和经济型e实例的区别及选择参考。
阿里云轻量应用服务器和经济型e实例区别及选择参考
|
20天前
|
机器学习/深度学习 存储 人工智能
阿里云GPU云服务器实例规格gn6v、gn7i、gn6i实例性能及区别和选择参考
阿里云的GPU云服务器产品线在深度学习、科学计算、图形渲染等多个领域展现出强大的计算能力和广泛的应用价值。本文将详细介绍阿里云GPU云服务器中的gn6v、gn7i、gn6i三个实例规格族的性能特点、区别及选择参考,帮助用户根据自身需求选择合适的GPU云服务器实例。
阿里云GPU云服务器实例规格gn6v、gn7i、gn6i实例性能及区别和选择参考
|
13天前
|
弹性计算 人工智能 安全
阿里云推出第九代ECS实例,最高提升30%性能
阿里云推出第九代ECS实例,最高提升30%性能
119 14

热门文章

最新文章

下一篇
无影云桌面