如何在 Ubuntu 20.04 中创建仅 SFTP 用户

SFTP(SSH 文件传输协议)是一种安全文件协议,用于通过加密的 SSH 传输会话访问、管理和传输文件。 安全第一是系统管理员的拇指规则。 有时您可能需要向开发或其他团队提供 FTP/SFTP 访问权限以访问远程服务器上的文件。 这将为您提供一个安全通道,以提供对特定文件和目录的有限访问。

本教程将帮助您在 Ubuntu 系统上创建仅限 SFTP 的用户(没有 ssh shell 访问权限)。 并将 SFT 用户帐户限制 (chroot) 到特定目录。 还要禁用对用户的外壳访问。

先决条件

  • 一个正在运行的 Ubuntu 20.04 LTS 系统
  • 你必须有 sudo 具有 shell 访问权限的特权帐户

步骤 1 – 创建用户

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

sudo adduser --shell /bin/false sftpuser  

步骤 2 – 为 SFTP 创建目录

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

sudo mkdir -p /var/sftp/files  

在这里,我们将只允许用户访问“文件”目录。

现在,将文件目录的所有权更改为 sftpuser。 这样 sftpuser 只能在这个目录上读写。

sudo chown sftpuser:sftpuser /var/sftp/files  

并将/var/sftp的所有者和组所有者设置为root。 root 用户对此访问具有读/写访问权限。 组成员和其他帐户只有读取和执行权限。

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

步骤 3 – 仅为 SFTP 配置 sshd

现在在文本编辑器中编辑 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 配置并重新启动 SSH 服务以应用更改。

sudo systemctl restart ssh  

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

步骤 4 – 连接到 SFTP 用户

一次可以使用命令行或图形应用程序(如 Filezilla 或 WinSCP)连接到远程 SFTP 服务器。 在本教程中,我将向您展示在 Ubuntu 系统上连接仅 sftp 帐户的两种方法。

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

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

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

验证没有外壳访问:

由于此帐户配置为仅用于 SFTP 连接。 因此,如果任何用户尝试通过 SSH 连接,将在成功验证后立即断开连接。 用户将收到以下消息:

ssh [email protected]   [email protected]'s password: This service allows sftp connections only. Connection to sftp.tecadmin.net closed. 

结论

本教程介绍您在 Ubuntu 系统上创建一个仅限 sftp 的用户帐户。 禁用同一帐户的外壳访问以限制用户只能访问 sftp。