SFTP 服务部署及权限分配

本指南将帮助您在 Linux 服务器上部署一个 SFTP 服务器,并正确配置权限以确保用户只能访问其各自的目录。

安装 OpenSSH

确保您的系统上已安装 OpenSSH。如果没有,使用以下命令进行安装:

sudo apt update
sudo apt install openssh-server

创建目录结构

创建用于存储 SFTP 数据的主目录和共享子目录:

sudo mkdir -p /data/sftp-data/shared

设置目录权限和所有权

为了确保 Chroot 目录的安全性,必须设置正确的权限:

sudo chown root:root /data/sftp-data
sudo chmod 755 /data/sftp-data
sudo chown root:sftpusers /data/sftp-data/shared
sudo chmod 770 /data/sftp-data/shared

创建用户组

创建一个新的用户组 sftpusers:

创建 SFTP 用户

创建用户并将其添加到 sftpusers 组中:

批量创建用户和密码

配置 SSH

编辑 SSH 配置文件 /etc/ssh/sshd_config

找到已有的 Subsystem sftp 行并修改为:

并在文件末尾添加以下内容:

重启 SSH 服务

保存并关闭文件后,重启 SSH 服务:

步骤 8:验证 SSH 配置 使用以下命令验证 SSH 配置文件是否有语法错误:

如果没有返回任何错误信息,说明配置文件的语法是正确的。

测试 SFTP 连接

使用 SFTP 客户端(如 FileZilla)或命令行测试每个用户的连接,并验证用户是否被正确限制在共享目录中:

总结

通过上述步骤,您已经成功部署并配置了一个安全的 SFTP 服务器,使用户能够安全地上传和更新文件,同时确保他们只能访问指定的目录。以下是关键点的总结:

安装 OpenSSH:确保系统上安装了 OpenSSH 服务器。 创建目录结构:建立用于存储 SFTP 数据的主目录和共享子目录。 设置权限和所有权:确保 Chroot 目录的所有权是 root,且权限是 755;共享目录的权限是 770,所有者为 SFTP 用户。 创建用户组和用户:创建 sftpusers 用户组,并添加需要 SFTP 访问的用户。 配置 SSH:修改 SSH 配置文件以启用 SFTP 子系统和 Chroot 限制。 重启 SSH 服务:应用配置更改并重启 SSH 服务。 验证和测试:验证配置文件的语法,并使用 SFTP 客户端测试连接。

错误处理

如果sftpdata目录会挂载在容器下,可能会出现容器重启后导致目录权限变化的问题。记得检查目录权限 示例 sftpdb目录在/data/www/目录下,www目录挂载在nginx容器中,每次容器重启时,会导致www的权限变成nginx:nginx。结果就是用户无法登录。将www权限改成root:root即可

最后更新于