当前位置: 首页 > 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.dtcms.com/a/178834.html

相关文章:

  • A. Row GCD(gcd的基本性质)
  • Linux Shell编程和循环语句
  • Sui Basecamp 2025 全栈出击
  • Spring 是什么?它解决了什么问题?
  • Django之账号登录及权限管理
  • GrassRoot备份项目
  • uniapp项目打包的微信小程序,设置uni-popup type=“bottom“时,底部有空隙
  • Qt实现车载多媒体项目,包含天气、音乐、视频、地图、五子棋功能模块,免费下载源文件!
  • Amazon Redshift 使用场景解析与最佳实践
  • 全连接神经网络学习笔记
  • 学习黑客什么是 ARP
  • AutoGen 框架解析:微软开源的多人 Agent 协作新范式
  • 每日学习:DAY24
  • Spring AI 入门(持续更新)
  • 深入解析建造者模式(Builder Pattern)——以Java实现复杂对象构建的艺术
  • 支持鸿蒙next的uts插件
  • 计算机学习路线与编程语言选择(信息差)
  • LLaMA模型本地部署全攻略:从零搭建私有化AI助手
  • 突破网络限制:Windows平台离线搭建Linux环境+Docker化部署AI知识库RAGFlow实战
  • 平板收银系统、国产系统,鸿蒙系统,小键盘的封装与应用—仙盟创梦IDE
  • Matlab 数控车床进给系统的建模与仿真
  • Java执行linux服务器本地命令
  • HTTP Error 500.31 - Failed to load ASP.NET Core runtime
  • 第三节第一部分:Static修饰类变量、成员变量
  • xiaopiu原型设计工具笔记
  • 多环串级PID
  • Spring Boot 启动原理的核心机制
  • Git实战经验分享:深入掌握git commit --amend的进阶技巧
  • 一种机载扫描雷达实时超分辨成像方法——论文阅读
  • uniapp|实现多终端视频弹幕组件、内容轮询、信息表情发送(自定义全屏半屏切换、弹幕启用)