如何在 Ubuntu 和 Debian 中创建仅 SFTP 用户

SFTP(SSH 文件传输协议)是一种安全文件协议,用于通过加密的 SSH 传输会话访问、管理和传输文件。 这里 SFTP only user 是指创建一个帐户,仅通过 SFTP 访问服务器。 该用户没有 SSH shell 访问权限。 这允许您提供一个安全通道来提供对特定文件和目录的有限访问。

本指南介绍您在 Ubuntu 和 Debian 系统上创建没有 shell 访问权限的仅 SFTP 用户。

步骤 1 – 创建新用户

首先,在您的系统中创建一个用户帐户以用作 SFTP 用户。 以下命令将创建一个名为的新帐户 用户 没有外壳访问。 您可以更改您选择的用户名

sudo adduser --shell /bin/false sftpuser  

该命令将提示输入为新帐户设置的密码。

步骤 2 – 为 SFTP 创建目录

现在,创建可供 SFTP 用户访问的目录结构。

sudo mkdir -p /var/sftp/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 配置 sshd

/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 

Save 文件和 close.

指令是:

  • 匹配用户 定义仅应用 SFTP 配置的用户名。 在我们的例子中是:sftpuser
  • ForceCommand 内部-sftp 强制 SFTP 仅访问用户并限制 shell 访问。
  • 密码认证是 允许对用户进行密码验证。
  • Chroot目录 /var/sftp 限制用户只能访问该目录下的目录。 这里 /var/sftp 作为用户的根目录。
  • AllowAgentForwarding 否 指定是否允许 ssh-agent 转发。 默认为是。
  • AllowTcpForwarding 否 指定是否允许 TCP 转发。 默认为是。
  • X11转发无 指定图形应用程序被允许的地方

重新启动 SSH 服务以应用新设置:

sudo systemctl restart ssh  

就是这样。 您已成功完成在基于 Debian 的系统上创建仅 SFTP 用户的说明。

第 4 步 – 安全提示(选项)

以下是生产环境中 SFTP 帐户的一些基本但重要的安全提示。

  1. 在非标准端口上运行 SSH 服务器
  2. 禁止密码认证并配置基于密钥的认证
  3. 确保防火墙仅限于特定 IP 地址
  4. 并保持 openssh 包是最新的

结论

本教程介绍您在 Ubuntu 系统中创建仅 SFTP 用户。 它将禁用相同用户的 shell 访问,以仅限于指定目录。