如何在 Debian 11 中创建仅 SFTP 用户

SFTP(SSH 文件传输协议)是一种安全文件协议,用于通过加密的 SSH 传输会话访问、管理和传输文件。 安全第一是系统管理员的经验法则。 在某些情况下,我们需要允许远程用户访问我们系统上的文件系统,但您不想让他们获得 shell。 这将为您提供一个安全通道,以提供对特定文件和目录的有限访问。

本教程将帮助您在 Debian 11 系统上设置仅 SFTP 访问(无 shell 访问)。 它将在您的系统上创建一个 chroot 环境,以将 SFTP 用户限制在特定目录中。 此外,它将只允许 SFTP 访问,而不能对用户进行 SSH 访问。

先决条件

  • 正在运行的 Debian 11 Bullseye Linux 系统
  • 你必须有 sudo 具有 shell 访问权限的特权帐户

步骤 1 – 创建新用户

首先,新建一个用户连接sftp服务器。 以下命令将创建一个名为的新帐户 用户 没有外壳访问。 您可以使用您选择或要求的任何名称。

sudo adduser --shell /bin/false sftpuser  

步骤 2 – 为 SFTP 访问创建目录

您已经为 sftp 创建了一个用户。 现在,创建一个目录来配置 sftp 的 chroot。 对于这个例子,我将创建一个 /var/sftp 目录。 该目录必须具有 root 所有权才能配置为 chroot 目录。 因此,我们将在 /var/sftp 下创建一个子目录,对 sftp 帐户具有写入权限。

使用以下命令创建目录结构:

sudo mkdir -p /var/sftp/files  

接下来,我们必须对目录设置适当的权限,以配置为对用户具有写访问权限的 chroot 访问权限。 这里 /var/sftp 必须具有具有适当权限的根所有权和组。 要设置该权限,请键入:

sudo chown root:root /var/sftp  sudo chmod 755 /var/sftp  

现在,更改权限 "files" 允许对 sftpuser 进行写访问的目录。 要设置该权限,请键入:

sudo chown sftpuser:sftpuser /var/sftp/files  

一旦 sftpuser 连接到服务器,将获取 /var/sftp 作为根目录。 他无法访问外部的文件系统。 此外,用户只能读取/写入“files”目录下的文件。

步骤 3 – 仅为 SFTP 配置 sshd

接下来,您需要配置 SSH 服务器,以允许“sftpuser”仅使用 sFTP 连接服务器,而无需 shell 访问。 要进行必要的更改,请编辑 SSH 配置文件。

sudo nano /etc/ssh/sshd_config  

并在文件末尾添加以下设置。

Match User sftpuser 	ForceCommand internal-sftp 	PasswordAuthentication yes 	ChrootDirectory /var/sftp 	PermitTunnel no 	AllowAgentForwarding no 	AllowTcpForwarding no 	X11Forwarding no 
SFTP 用户的 Chroot 配置

仔细检查所有设置是否正确。 然后保存更改并重新启动 SSH 服务以应用更改。

sudo systemctl restart ssh  

一切都完成了,在您的 Debian 系统上成功创建了仅使用 SFTP。 现在尝试使用新用户的凭据登录远程系统,并检查是否一切正常。

第 4 步 – 连接到 SFTP

可以使用命令行或 Filezilla 或 WinSCP 等图形应用程序连接到远程 SFTP 服务器。 在本教程中,我将向您展示连接 SFTP 服务器的两种方法。

Linux 用户可以使用 sftp 命令行实用程序连接到远程 sftp 实例。

sftp [email protected]   [email protected]'s password: sftp> 

GUI 界面或 Windows 用户可以使用图形 sftp 客户端。 例如,使用 Filezilla 客户端连接远程系统上的远程 sftp 帐户。