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

Linux下使用openssh搭建sftp服务

创建 SFTP 用户组

为 SFTP 用户创建一个专用组:

sudo groupadd sftpusers

创建 SFTP 用户

创建 SFTP 用户并将其添加到 sftpusers 组,同时指定用户的主目录和禁止 shell 访问

sudo useradd -g sftpusers -s /sbin/nologin username
sudo passwd username

配置 SSH 以限制 SFTP 访问

编辑 SSH 配置文件 /etc/ssh/sshd_config:(编辑前记得备份

sudo nano /etc/ssh/sshd_config

找到并修改或添加以下内容:

Subsystem sftp internal-sftpMatch Group sftpusersChrootDirectory /var/sftp/%uForceCommand internal-sftpAllowTcpForwarding noX11Forwarding no
  • Match Group sftpusers表示后面配置将仅应用于属于 sftpusers 组的用户。

  • ChrootDirectory /var/sftp/%u将用户的根目录限制到 /var/sftp/ 下的用户目录(%u 表示用户名),防止用户访问授权目录之外的内容。

  • ForceCommand internal-sftp强制用户进入 SFTP 模式,禁止通过 SSH 登录到交互式 shell。

  • AllowTcpForwarding no禁用 TCP 转发,防止用户通过 SSH 隧道转发 TCP 流量。

  • X11Forwarding no禁用 X11 转发,防止用户通过 SSH 隧道转发 X11 图形界面应用程序。

设置 Chroot 目录结构

为 SFTP 用户设置目录结构:(如果有多个用户用来访问sftp,那么需要为每个用户都创建一个/var/sftp/username目录)

sudo mkdir -p /var/sftp/username
sudo chown root:root /var/sftp/username
sudo chmod 755 /var/sftp/username
sudo mkdir /var/sftp/username/files
sudo chown username:sftpusers /var/sftp/username/files
sudo chmod 755 /var/sftp/username/files

重启 SSH 服务

重启 SSH 服务以应用更改:

sudo systemctl restart sshd

验证设置

使用 SFTP 客户端测试连接:

sftp username@localhost

使用winSCP客户端测试连接:

登录成功后,只能在访问自己的文件目录,且根目录下只有读权限,files目录下具有读写权限。

通过上述步骤,可以确保 SFTP 用户只能访问其授权的目录,并且无法通过 SSH 登录系统。这些措施可以有效地提高文件传输的安全性。

http://www.xdnf.cn/news/333577.html

相关文章:

  • SQL:MySQL函数:字符串函数
  • 金仓数据库征文-金仓KES数据同步优化实践:逻辑解码与增量同步
  • 深入理解负载均衡:传输层与应用层的原理与实战
  • KRaft (Kafka 4.0) 集群配置指南(超简单,脱离 ZooKeeper 集群)还包含了简化测试指令的脚本!!!
  • WSL部署CosyVoice
  • node.js 实战——express图片保存到本地或服务器(七牛云、腾讯云、阿里云)
  • 能耗优化新引擎:EIOT平台助力企业降本增效
  • 需求分析阶段测试工程师主要做哪些事情
  • 华为云Astro后端开发中对象、事件、脚本、服务编排、触发器、工作流等模块的逻辑关系如何?以iotDA数据传输过程举例演示元素工作过程
  • 精品,架构师总结,MySQL 5.7 查询入门详解
  • trae ai编程工具
  • C++ STL入门:set 集合容器
  • 从父类到子类:C++ 继承的奇妙旅程(1)
  • Windows环境下MySQL Installer安装后执行`mysql`和`mysql -v`报错的问题解决方法
  • git 多个提交记录合并为一个
  • MySQL从入门到精通(四):SQL语言—DML
  • ts-node 深入讲解
  • Open CASCADE学习|ApplicationFramework 框架使用指南
  • linux查java进程CPU高的原因
  • 人工智能数据标注服务规范
  • SQL 更新U9C的请购单终止后不能转PO的问题
  • C++实现摩斯电码
  • 基于房屋框架结构的房屋布局大模型
  • Python操作MySQL
  • 大模型工具与案例:云服务器部署dify与使用
  • 《人工智能:如何重塑教育模式与学习图景》
  • MySQL5.6-5.7-8.0在线DDL操作锁表介绍
  • # 构建机器学习模型的桌面应用程序:从训练到部署
  • 前端实现简易 计时器
  • 多层PCB SMT贴装全流程指南:从物料准备到回流焊工艺控制