如何在 Ubuntu 20.04 中创建具有指定目录权限的 SFTP 用户

SFTP 代表安全文件传输协议,我们使用它来与您的本地系统进行安全数据传输。 它通过 SSH 协议工作,因此被认为比简单的 FTP(文件传输协议)更安全。 数据传输是每个需要更改代码的系统管理员和其他开发人员的例行任务。

因此,在今天的文章中,我们将展示配置 SFTP 服务器和创建具有指定目录权限的用户的详细步骤。

对于演示,我们使用 Ubuntu 20.04 LTS 进行 SFTP 设置,但如果您使用的是 RHEL/CentOS 操作系统,则可以执行类似的步骤。

先决条件:

从先决条件开始,我们需要确保我们有 sudo 或我们需要创建 SFTP 用户的服务器上的 root 用户权限。

让我们首先使用 ssh 登录系统,您可以使用 Linux 桌面的 Putty 或 Shell 终端。

# ssh -i key.pem [email protected]_server_ip
# sudo -i

您也可以直接登录您的系统,但请确保使用您自己的用户名和凭据。

第 1 步:创建新的 SFTP Only 用户

为 SFTP 创建新用户与我们为添加任何其他一般用户所做的类似。 但为了将其限制为仅用于 SFTP 目的,我们将其分配给无登录 shell。

运行以下命令,通过指定其自定义主目录来创建 SFTP 用户。

# useradd -m -d /home/example.com sftp_user

使用“passwd”命令设置新创建用户的密码,如下所示。

# passwd sftp_user

确保设置复杂的密码以确保其安全。 然后通过如下修改’passwd’文件为其分配一个nologin shell。

# vim /etc/passwd
sftp_user:x:1001:1001::/home/example.com:/usr/sbin/nologin

Save 和 close 使用:wq! 应用更改。

第 2 步:设置目录权限

创建新用户后,我们需要为我们在第一步中创建的用户目录设置正确的目录权限和所有权。

# chmod 755 /home/example.com/
# chown root:root /home/example.com

第 3 步:限制目录访问

现在我们有了一个新的仅限 SFTP 的用户,接下来我们需要限制它的目录访问权限,使其可以访问我们创建的指定主文件夹。

为此,我们将通过添加以下参数来修改 ssh 配置文件。

# vim /etc/ssh/sshd_config
subsystem sftp internal-sftp  Match User sftp_user  ChrootDirectory %h  AllowTCPForwarding no  X11Forwarding no  PasswordAuthentication yes  ForceCommand internal-sftp

在保存所做的更改之前,请确保将您的用户名添加到 ‘Match User’ 中,而 ‘%h’ 代表您在受限环境中新创建的用户的主目录。 此“ChrootDirectory”将确保您的 SFTP 用户无权访问任何其他目录。
Save ssh 配置文件,如果有问题,请验证语法,然后重新启动其服务并使用以下命令确认它是否正在运行。

# ssh -t
# systemctl restart sshd
# systemctl status sshd

在这里,您可以看到首先在 ssh 配置文件中存在错误,我们通过注释掉附加条目并重新启动 ‘sshd 服务来修复该错误。

第 4 步:测试 SFTP 登录

此时,我们已准备好使用我们的 SFTP 用户,但在此之前让我们使用 ssh 命令对其进行测试以确保它只有 SFTP 访问权限。

# [email protected]

而 xx 需要替换为自己的服务器 IP。 结果,您应该得到如下所示的连接失败。