一分钟在Linux 环境 搭建 SFTP服务器

文章目录

          • 一、实战
            • 1. 创建sftp组:
            • 2. 创建一个用户sftpuser:
            • 3. 设置sftpuser用户的密码,会要求你输入两次密码确认:
            • 4. 创建一个sftp的上传目录:
            • 5. 修改用户sftpuser所在的目录:
            • 6. 配置sshd_config:
            • 7. 设定Chroot目录权限:
            • 8. 建立SFTP用户登入后可写入的目录
            • 9. 重启sshd服务:
            • 10. 测试是否能正常登陆:
            • 11. 关闭SElinux:
          • 二、常见问题
            • 2.1. 这里讨论了为什么要关闭这功能
            • 2.2. 连接异常

(附解决Write failed: Broken pipe Couldn’t read packet: Connection reset by peer)…

一、实战
1. 创建sftp组:
groupadd sftp
2. 创建一个用户sftpuser:
useradd -g sftp -s /bin/false sftpuser

#参数说明:
/etc/group 文件包含所有组
/etc/shadow /etc/passwd 系统存在的所有用户名

3. 设置sftpuser用户的密码,会要求你输入两次密码确认:
passwd sftpuser
4. 创建一个sftp的上传目录:
mkdir /app/data
5. 修改用户sftpuser所在的目录:
usermod -d /app/data sftpuser
6. 配置sshd_config:
vim /etc/ssh/sshd_config

如果没有vim,请执行

vi /etc/ssh/sshd_config

#找到如下这行,并注释掉
#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命令

为什么用 internal-sftp 而不用默认的 sftp-server,这是因为:
这是一个进程内的 sftp 服务,当用户 ChrootDirectory 的时候,将不请求任何文件;更好的性能,不用为 sftp 再开一个进程。
#保存退出

7. 设定Chroot目录权限:
chown -R root:root /app/data
chmod 755 /app/data
8. 建立SFTP用户登入后可写入的目录
mkdir /app/data/sftpuser
chown -R sftpuser:sftp /app/data/sftpuser/
chmod 755 /app/data/sftpuser/
9. 重启sshd服务:
service sshd restart
10. 测试是否能正常登陆:
#执行这一行命令,输入密码即可
sftp sftpuser@localhost 
11. 关闭SElinux:
vim /etc/sysconfig/selinux

#找到如下这行
SELINUX=enforcing
#修改为
SELINUX=disabled
#保存退出
在这里插入图片描述

二、常见问题
2.1. 这里讨论了为什么要关闭这功能

https://www.zhihu.com/question/20559538

2.2. 连接异常
[root@localhost home]# sftp sftpuser@localhost
Connecting to localhost...
sftpuser@localhost's password: 
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer

这个问题,是由于用户组决定的,解决很简单
我的sftp前缀目录是/app/data
首先,咱们找到/app目录,查看他的权限,也就是用户组和用户
在这里插入图片描述
从上图,可以看出用户和户组都是root权限对吧,不要问为都是root,一句话,不是root,不好使。

然后,找到/app下面的data目录
在这里插入图片描述
从上图,可以看出用户和户组都是root权限对吧,不要问为都是root,一句话,不是root,不好使。

上面是sftpuser的限制活动的目录。

下面进入到,sftpuser登录后的目录看看权限是什么样的呢?
在这里插入图片描述
从上图,可以看出用用户是sftpuser、用户组是sftp权限对吧,不要问为这样设置,一句话,不这样设置,不好使。

完美解决!

这样问题不好发现,

补充:

我当初是怎样发现这个问题的呢?
搭建sftp服务器 只要不在/app目录下面创建都好使,但是在/app目录下面创建就是不好使,然后我就比对目录权限之间的区别,发现/app的用户是oracle 用户组是oinstall,怎样测试和配置都不好使。希望能够帮助到小伙伴们!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519334.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务架构何去何从?

戳蓝字“CSDN云计算”关注我们哦!作者 | 孙玄本文经授权转载自架构之美前言微服务架构模式经过5年多的发展,在各行各业如火如荼地应用和实践。如何在企业中优雅地设计微服务架构?是企业面对的一个重要问题。本文将讲述微服务架构1.0设计与实践…

寻找 K8s 1.14 Release 里的“蚌中之珠”

Kubernetes 1.14.0 Release 已经于3月25日正式发布。相信你也已经注意到,相比于1.13 和 1.12 版本,这次发布包含的重要变更非常多,其对应的 Release Note 的篇幅长度也创下了“新高”。 面对这样一份“海量信息”的 Release Note&#xff0c…

appium java 点击事件_“按钮点击”在Appium Android测试中给出“处理命令时出现未知的服务器端错误 . ”...

info:[debug]将命令推送到appium工作队列:[“element:getSize”,{“elementId”:“2”}] info:[debug] [BOOTSTRAP] [debug]从客户端获取数据:{“cmd” :“action”,“ac…

天马行空脚踏实地,阿里巴巴有群百里挑一的天才应届生

阿里巴巴有一群天马行空脚踏实地的阿里星。 天下网商记者 王安忆 阿里巴巴的春季校招已经启动。在阿里的技术大咖储备团队中,有三分之一是来自高校招聘,这当中,有一项名为阿里星的神秘计划。这是校招中专门针对高校顶尖大学生的一个培养计划&…

linux Nas挂载

文章目录一、NAS服务端1. 首先查看服务器上是否有nfs和rpc相关软件2. 设置共享3. 使配置生效:4. 查看所有可挂载5. rpcbind启和动nfs6.配置防火墙7. 查看防火墙的状态8. 启动防火墙9. 开放端口10. 重新启动防火墙11. 查看已开放的端口二、客户端(应用服务器)2.1.查看空间分布2.…

GitHub 标星 14000+,阿里开源的 SEATA 如何应用到极致?

戳蓝字“CSDN云计算”关注我们哦!作者简介:袁鸣凯,家乐福技术总监, 高知特有限技术公司中国区架构师,HP上海研发技术专家,夸客金融首席架构师,现任家乐福中国区技术总监。多年互联网、企业级SOA…

阿里小二的日常工作要被TA们“接管”了!

昨天有人偷偷告诉我说 阿里巴巴其实是一家科技公司! 我想了整整一夜 究竟是谁走漏了风声 那么重点来了,阿里到底是如何在内部的办公、生活中,玩转“黑科技”的呢? AI取名:给你专属的“武侠”花名 花名是阿里巴巴独…

java超时结束程序_java本机进程超时

java本机进程超时目前,我使用以下命令执行本机进程:java.lang.Process process Runtime.getRuntime().exec(command);int returnCode process.waitFor();假设我希望在经过一定时间后终止,而不是等待程序返回。 我该怎么做呢?del…

oracle 修改表字段的长度

alter table 表名 modify 列名 数据类型; alter table bl_yhsz modify zcmc varchar2(120); alter table sys_job_log modify EXCEPTION_INFO VARCHAR2(3000);

对话Ruby创始人松本行弘、阿里高级技术专家朴灵!

4月25日,云栖社区联合阿里云国际站,特别邀请了Ruby创始人Matz(松本行弘)、阿里云高级技术专家朴灵,来为开发者们分享干货。 在本次活动上可以了解到Ruby语言最新的动态,Ruby和新语言golang在性能方面的差别…

Serverless 终结 Kubernetes?

戳蓝字“CSDN云计算”关注我们哦!Kubernetes 是基础架构管理的终极解决方案吗?还是说我们更加需要 Serverless?究竟哪种技术能够解救运维团队?不要忘记,NoOps 的世界即将到来。作者 | Daniele Fontani译者 | 弯月封图 …

代号“凤凰”,阿里新零售秘密武器,今年要打入100个城市

2019年,淘鲜达要在100个城市完成1000个门店的新零售改造。 天下网商记者 张文政 过去一年,初平三分之二的时间在出差,足迹遍及山东、河南、江西、湖南等地。 初平是天猫超市事业群战略合作部总经理,负责天猫超市旗下“淘鲜达”…

VS Code 批量操作

文章目录1. 关键词批量选中2. 末尾批量编辑3. 垂直批量编辑4. 垂直批量选中5. 批量选中整行6. 批量复制整行1. 关键词批量选中 Ctrld 选中相同的词句,批量编辑 2. 末尾批量编辑 shirtalti移动到最后,批量编辑 3. 垂直批量编辑 Ctrlalt↓垂直批量编…

Node.js 应用故障排查手册 —— 利用 CPU 分析调优吞吐量

楔子 在我们想要新上线一个 Node.js 应用之前,尤其是技术栈切换的第一个 Node.js 应用,由于担心其在线上的吞吐量表现,肯定会想要进行性能压测,以便对其在当前的集群规模下能抗住多少流量有一个预估。本案例实际上正是在这样的一…

python idea控制台中文乱码_解决IntelliJ IDEA 控制台输出中文乱码问题(史上最简单)...

解决IntelliJ IDEA 控制台输出中文乱码问题(史上最简单)首先,找到 IntelliJ IDEA 的安装目录,进入bin目录下,定位到idea.vmoptions文件,如下图所示:双击打开idea.vmoptions文件,如下图所示:然后…

VS Code 下载

官网地址: https://code.visualstudio.com/

通过DataWorks数据集成归档日志服务数据至MaxCompute进行离线分析

但是会遇到大家在分区上或者DataWorks调度参数配置问题,具体拿到真实的case模拟如下: 创建数据源: 步骤1 进入数据集成,点击作业数据源,进入Tab页面。 步骤2 点击右上角 新增数据源,选择消息队列…

这是我见过最卡通的 Python 算法了,通俗易懂

戳蓝字“CSDN云计算”关注我们哦!普通程序员,不学算法,也可以成为大神吗?对不起,这个,绝对不可以。可是算法好难啊~~看两页书就想睡觉……所以就不学了吗?就一直当普通程序员吗?如果…

在 IntelliJ IDEA 中部署应用到服务器

在之前的文章《在 Intellij IDEA 中部署 Java 应用到 阿里云 ECS》中讲解了如何将一个本地应用部署到阿里云 ECS 上去,有些读者反馈目前还有一些测试机器是在经典网络,甚至是在本地机房中,咨询是否可以通过 Cloud Toolkit 插件将应用部署到这…

java递归老鼠走迷宫_递归算法求老鼠走迷宫(C语言)

/*说明老鼠走迷宫是递回求解的基本题型,我们在二维阵列中使用2表示迷宫墙壁,使用1来表示老鼠的行走路径,试以程式求出由入口至出口的路径。解法老鼠的走法有上、左、下、右四个方向,在每前进一格之后就选一个方向前进,…