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

如何在 Ubuntu 24.04 配置 SFTP Server ?

Secure File Transfer Protocol

SFTP (Secure File Transfer Protocol)是一种在网络上安全可靠的文件传输方法。在 Linux 上设置 SFTP 服务器允许您安全地传输文件,管理权限和控制访问。

在本指南中,我们将逐步解释如何在 Ubuntu 24.04 LTS 系统上设置 SFTP 服务器。

chroot 介绍

当我们在 chroot 环境中配置 SFTP 时,那么用户将被限制在他们的 home directory,或者我们可以说被用户将处于类似于 监狱 的环境中,在那里他们甚至不能更改他们的目录。

Install OpenSSH Server

SFTP 是 OpenSSH 服务器包的一部分,安装 OpenSSH 服务器包,如果已经安装,则跳过此步骤。

$ sudo apt update 
$ sudo apt install openssh-server -y

安装 openssh 服务器后,使用以下 systemctl 命令启动并启用它的服务。

$ sudo systemctl start sshd
$ sudo systemctl enable sshd

Create SFTP Group and User

要管理对 SFTP 服务器的访问,最好创建一个专用的 SFTP 组和用户。

使用 groupadd 命令创建一个 sftp _ users 组

$ sudo groupadd sftp_users

添加一个新用户 sftpuser,并将其分配给 sftp_users 组,该用户只具有 SFTP 访问权限

$ sudo useradd -m -G sftp_users -s /usr/sbin/nologin sftpuser

接下来,运行 passwd 命令设置 sftpuser 用户的密码

$ sudo passwd sftpuser

Configure SSH for SFTP-Only Access

我们需要配置 SSH,以限制 SFTP 用户只能访问 SFTP。编辑 sshd_config 文件,在文件末尾添加以下行,配置 sftp_users 组中的用户只能访问 sftp 服务。

# vi /etc/ssh/sshd_config#comment out the below line and add a line like below
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp# add Below lines at the end of file
Match Group sftp_users
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no

部分配置说明:

Match Group sftp_users – 只匹配属于 sftp_users 组的用户
ChrootDirectory %h – 默认用户的主目录,对于 sftpuser,这是 /home/sftpuser
ForceCommand internal-sftp – 这将强制执行 Internal-sftp 并忽略 ~/. ssh/rc 文件中提到的任何命令。

进行上述更改后,使用以下命令重新启动 ssh 服务

$ sudo systemctl restart sshd    // For RHEL based Distributions
$ sudo systemctl restart ssh     // For Debian based Distributions

Set the required permissions

使用 chown 和 chmod 命令调整用户主目录的权限

$ sudo chown root:root /home/sftpuser
$ sudo chmod 755 /home/sftpuser

创建一个 sftpuser 可以上传文件的目录

$ sudo mkdir /home/sftpuser/uploads
$ sudo chown sftpuser:sftp_users /home/sftpuser/uploads

5) Test sftp server

首先,尝试使用 ssh 访问系统

$ ssh sftpuser@your_server_ip

Try SSH Linux System with sftpuser

正如我们在上面的输出中看到的,sftpuser 不允许 ssh 登陆。

现在,让我们尝试使用 sftp 登录

Sftp Remote Linux System

正如您在上面看到的,sftpuser 通过 sftp 登录,但是由于 chroot 环境的原因无法更改目录。

进行上传和下载测试,如下所示:

How to Setup SFTP Server on Ubuntu 24.04

我的开源项目

酷瓜云课堂-在线教育解决方案

  • course-tencent-cloud(酷瓜云课堂 - gitee仓库)
  • course-tencent-cloud(酷瓜云课堂 - github仓库)
http://www.xdnf.cn/news/18389.html

相关文章:

  • AI 驱动三维逆向:点云降噪算法工具与机器学习建模能力的前沿应用
  • vue3源码reactivity响应式之数组代理的方法
  • MySQL/Kafka数据集成同步,增量同步及全量同步
  • 深入理解数据结构:从数组、链表到B树家族
  • 医疗AI与医院数据仓库的智能化升级:异构采集、精准评估与高效交互的融合方向(上)
  • 【工具使用-Docker容器】构建自己的镜像和容器
  • 栈上创建和堆上创建区别
  • 低开高走的典例:DeepSeek V3.1于8月19日晚更新:128K 上下文击败 Claude 4 Opus
  • 攻克PostgreSQL专家认证
  • RabbitMQ:消息转化器
  • Java EE ----- Spring Boot 日志
  • 第四章:大模型(LLM)】07.Prompt工程-(5)self-consistency prompt
  • 【自动化运维神器Ansible】Roles中Tags使用详解:提升自动化效率的利器
  • 氢元素:宇宙基石与未来能源之钥的多维探索
  • TENON AI-AI大模型模拟面试官
  • GPT-4.1旗舰模型:复杂任务的最佳选择及API集成实践
  • Datawhale工作流自动化平台n8n入门教程(一):n8n简介与平台部署
  • 数据组合与合并:Pandas 数据整合全指南 +缺失值处理
  • Redission是什么
  • 【大模型本地运行与部署框架】Ollama的使用记录
  • TDengine IDMP 运维指南(3. 使用 Ansible 部署)
  • HTML应用指南:利用GET请求获取全国新荣记门店位置信息
  • 代码随想录Day56:图论(冗余连接、冗余连接II)
  • CTFshow系列——命令执行web34-37
  • 深入理解抽象类
  • 08.5【C++ 初阶】实现一个相对完整的日期类--附带源码
  • 《算法导论》第 31 章 - 数论算法
  • AI驱动的SEO关键词优化秘籍
  • DAY 50 预训练模型+CBAM模块
  • RabbitMQ:SpringAMQP 多消费者绑定同一队列