当前位置: 首页 > news >正文

基于centos7.9搭建SFTP服务

SFTP(Secure File Transfer Protocol)是一种安全的文件传输协议,它基于SSH协议,提供了加密的文件传输功能。

安装OpenSSH服务器,默认已经安装

yum install openssh-server -y

创建SFTP用户组和用户

groupadd sftp_users
useradd -g sftp_users -s /sbin/nologin sftp_user
passwd sftp_user

创建SFTP目录结构并设置正确的权限

mkdir -p /sftp/sftp_user/upload
chown root:root /sftp
chmod 755 /sftp
chown root:root /sftp/sftp_user
chmod 755 /sftp/sftp_user
chown sftp_user:sftp_users /sftp/sftp_user/upload
chmod 775 /sftp/sftp_user/upload

修改SSH配置文件

vi /etc/ssh/sshd_config

文件末尾添加

Match Group sftp_usersChrootDirectory /sftp/%uForceCommand internal-sftpX11Forwarding noAllowTcpForwarding no

配置参数详解

  • Match Group sftp_users
    这行开始一个条件块,指定后续的设置只适用于 sftp_users 组的成员。
  • ChrootDirectory /sftp/%u
    将用户限制在指定的目录中。%u 是一个变量,代表用户名。
    例如,对于用户 “sftp_user”,实际的 chroot 目录将是 /sftp/sftp_user。
  • ForceCommand internal-sftp
    强制使用内部 SFTP 服务器,而不允许普通的 SSH 访问。
  • X11Forwarding no
    禁止 X11 转发,这是一种图形界面转发技术。
  • AllowTcpForwarding no
    禁止 TCP 端口转发,增加安全性。

其他可以配置的参数:

  • PasswordAuthentication yes/no
    允许或禁止密码认证。
  • PermitRootLogin no
    禁止 root 用户直接登录。
  • AllowUsers user1 user2
    指定允许登录的用户列表。
  • AllowGroups group1 group2
    指定允许登录的组列表。
  • DenyUsers user1 user2
    指定禁止登录的用户列表。
  • DenyGroups group1 group2
    指定禁止登录的组列表。
  • PermitEmptyPasswords no
    禁止空密码登录。
  • MaxAuthTries 3
    设置最大认证尝试次数。
  • LoginGraceTime 60
    设置登录超时时间(秒)。
  • ClientAliveInterval 300
    设置服务器向客户端发送保活消息的间隔(秒)。
  • ClientAliveCountMax 3
    设置服务器在断开连接前等待客户端响应的最大次数。
  • UseDNS no
    禁用 DNS 反向查询,可以加快登录速度。
  • AllowAgentForwarding no
    禁止 SSH 代理转发。
  • Banner /etc/ssh/banner
    指定登录前显示的欢迎信息文件。
  • Compression delayed
    延迟压缩直到用户认证成功,可以防止某些攻击

重启

systemctl restart sshd

防火墙开启端口

firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload

关闭selinux

setenforce 0

测试SFTP连接;连接时会把当前位置默认设置为根目录,上传和下载的默认位置

sftp sftp_user@localhost

上传测试

[root@localhost ~]# cd /opt/
[root@localhost opt]# ls
[root@localhost opt]# touch test.txt
[root@localhost opt]# sftp sftp_user@localhost
sftp_user@localhost's password:
Connected to localhost.
sftp> ls
upload
sftp> cd upload/
sftp> ls
sftp> put test.txt
Uploading test.txt to /upload/test.txt
test.txt                                                                              100%    0     0.0KB/s   00:00
sftp>
sftp> exit
[root@localhost opt]# ll /sftp/sftp_user/upload/
total 0
-rw-r--r--. 1 sftp_user sftp_users 0 Sep 20 23:43 test.txt
[root@localhost opt]#

下载测试

[root@localhost ~]# ls
anaconda-ks.cfg
[root@localhost ~]# sftp sftp_user@localhost
sftp_user@localhost's password:
Connected to localhost.
sftp> cd /upload/
sftp> ls
test.txt
Fetching /upload/test.txt to /root/texit
sftp> get test.txt /root/test.txt
Fetching /upload/test.txt to /root/test.txt
sftp> exit
[root@localhost ~]# ls
anaconda-ks.cfg  test.txt

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【机器学习随笔】PCA降维与SVD
  • 【记录】大模型|Windows 下 Hugging Face 上的模型的通用极简调用方式之一
  • react + antDesignPro 企业微信扫码登录
  • Java 之反射机制详解
  • MySQL中的LIMIT与ORDER BY关键字详解
  • go/函数
  • 从IPC摄像机读取视频帧解码并转化为YUV数据到转化为Bitmap
  • DeepSeek 2.5本地部署的实战教程
  • 7--SpringBoot-后端开发、原理详解(面试高频提问点)
  • Web后端开发技术:RESTful 架构详解
  • 如何在GitHub上Clone项目:一步步指南
  • js 深入理解类-class
  • 存储系统概述
  • 移动端如何实现智能语音交互
  • Java免税商品优选商城:Spring Boot实战
  • js递归,无限分级树形折叠菜单
  • js数组之filter
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • nginx 负载服务器优化
  • React Transition Group -- Transition 组件
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • vue学习系列(二)vue-cli
  • 阿里云应用高可用服务公测发布
  • 笨办法学C 练习34:动态数组
  • 翻译:Hystrix - How To Use
  • 经典排序算法及其 Java 实现
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 使用Swoole加速Laravel(正式环境中)
  • 移动端唤起键盘时取消position:fixed定位
  • 以太坊客户端Geth命令参数详解
  • ​MySQL主从复制一致性检测
  • # 透过事物看本质的能力怎么培养?
  • #define 用法
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (C语言)fgets与fputs函数详解
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (javascript)再说document.body.scrollTop的使用问题
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (二)原生js案例之数码时钟计时
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (附源码)springboot教学评价 毕业设计 641310
  • (每日一问)基础知识:堆与栈的区别
  • (强烈推荐)移动端音视频从零到上手(下)
  • (三)c52学习之旅-点亮LED灯
  • (图)IntelliTrace Tools 跟踪云端程序
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • (原創) 未来三学期想要修的课 (日記)
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转载)深入super,看Python如何解决钻石继承难题
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)