SFTP(SSH 文件传输协议)是一种安全文件协议,用于通过加密的 SSH 传输会话访问、管理和传输文件。这里的SFTP only user是指创建一个仅通过SFTP访问服务器的帐户。该用户没有 SSH shell 访问权限。这允许您通过安全通道提供对特定文件和目录的有限访问。
这篇博文介绍了如何在 Ubuntu 和 Debian 系统上创建仅使用 SFTP 且没有 shell 访问权限的用户。
第 1 步 - 创建新用户
首先,在系统中创建一个用户帐户以用作 SFTP 用户。以下命令将创建一个名为的新帐户sftpuser没有 shell 访问权限。您可以更改您选择的用户名
sudo adduser --shell /bin/false sftpuser
该命令将提示您为新帐户设置密码。
第 2 步 – 创建 SFTP 目录
现在,创建可供 SFTP 用户访问的目录结构。
sudo mkdir -p /var/sftp/files
这里我们将只允许用户访问“files”目录。
现在,更改所有权files
目录到sftpuser
。这样SFTP用户只能对该目录进行读写。无法访问此目录之外的任何文件。
sudo chown sftpuser:sftpuser /var/sftp/files
并设置所有者和组所有者/var/sftp
扎根。 root 用户对此访问具有读/写访问权限。组成员和其他帐户只有读取和执行权限。
sudo chown root:root /var/sftp
sudo chmod 755 /var/sftp
它将限制SFTP用户在下面写入文件/var/sftp
目录。
步骤 3 – 仅为 SFTP 配置 ssh
/etc/ssh/sshd_config
是OpenSSH服务器的主要配置文件。更改此配置文件时要小心,因为任何错误都可能导致连接丢失。
在文本编辑器中编辑 SSH 配置文件:
sudo vim /etc/ssh/sshd_config
然后在文件末尾添加以下设置。
Match User sftpuser
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/sftp
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
保存文件并关闭。
这些指令是:
-
匹配用户定义仅应用 SFTP 配置的用户名。在我们的例子中是:sftpuser
-
ForceCommand 内部 sftp强制仅对用户进行 SFTP 访问并限制 shell 访问。
-
密码验证 是允许用户进行密码验证。
-
Chroot目录 /var/sftp限制用户只能访问该目录下的目录。这里/var/sftp作为用户的根目录。
-
允许代理转发 否指定是否允许 ssh-agent 转发。默认为是。
-
允许Tcp转发 否指定是否允许 TCP 转发。默认为是。
-
X11转发号指定允许图形应用程序的地方
重新启动 SSH 服务以应用新设置:
sudo systemctl restart ssh
就是这样。您已成功完成在基于 Debian 的系统上创建仅限 SFTP 用户的说明。
第 4 步 – 安全提示(选项)
以下是生产环境中 SFTP 帐户的一些基本但重要的安全提示。
- 在非标准端口上运行 SSH 服务器
- 禁止密码身份验证并配置基于密钥的身份验证
- 确保防火墙仅限于特定 IP 地址
- 并使 OpenSSH 软件包保持最新
结论
本教程介绍如何在 Ubuntu 系统中创建仅限 SFTP 的用户。它将禁用相同用户的 shell 访问,以仅限于指定的目录。