SFTP 是一种允许通过网络安全传输文件的协议。它经常被企业和个人用来传输敏感数据。 SFTP 与 FTP 类似,但使用不同的协议进行通信。 SFTP 比 FTP 更安全,通常与 SSH(Secure Shell)结合使用以提供更高级别的安全性。
在本教程中,我们将帮助您在 Ubuntu 22.04 系统上设置 SFTP 服务器并创建仅 SFTP 用户。该帐户可以通过 SFTP 连接,但无法通过 SSH 连接。此外,这会将 SFTP 用户限制(chroot)到特定目录。
先决条件
具有 shell 访问权限的正在运行的 Ubuntu 22.04 LTS 系统
需要 sudo 特权帐户
第 1 步 – 安装 OpenSSH 服务器
Ubuntu 服务器已经安装了 OpenSSH 服务器,但桌面系统可能还没有。使用以下命令安装并运行 OpenSSH 服务器:
sudo apt update && sudo apt install openssh-server
第 2 步 – 创建 SFTP 用户
首先,在您的系统中创建一个新帐户作为 sftp 用户。
以下命令将创建一个名为的新帐户sftpuser 没有 shell 访问权限。您可以更改您选择的用户名
sudo adduser --shell /bin/false sftpuser
Creating SFTP user in Ubuntu 步骤 3 – 配置 SFTP 目录
现在,创建可供 sftp 用户访问的目录结构。
sudo mkdir -p /var/sftp/files
这里我们将只允许用户访问“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
步骤 4 – 更新 SSH 配置文件
现在在文本编辑器中编辑 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 only configuration on Ubuntu 保存配置文件并关闭它。
现在验证配置文件。
sudo sshd -t
如果验证成功,则不会显示任何输出。如果输出中显示任何错误,请确保在运行下一个命令之前修复它。
重新启动 SSH 服务以应用更改。
sudo systemctl restart ssh
全做完了。已在您的 Ubuntu 系统上成功创建仅 SFTP 用户。现在尝试使用新用户的凭据登录远程系统,并检查一切是否正常工作。
第 5 步 – 连接到 SFTP 用户
可以使用命令行或 Filezilla 或 WinSCP 等图形应用程序连接到远程 SFTP 服务器。在本教程中,我将向您展示将 sftp 仅连接到 Ubuntu 系统上的帐户的两种方法。
Linux 用户可以使用 sftp 命令行实用程序连接到远程 sftp 实例。
sftp sftpuser@192.168.1.210
sftpuser@192.168.10.100's password:
sftp>
您还可以使用 FileZilla 等图形界面应用程序连接到远程 SFTP 服务器。 Linux 和 Windows 用户都可以使用该功能。打开 Filezilla 应用程序并输入 sftp 详细信息:
Host: sftp://系统 IP 主机
用户名: 使用步骤 1 中创建的 SFTP 用户。
密码: 使用步骤 1 中创建的 SFTP 用户密码。
Port: 使用 SSH 服务器端口或将默认端口保留为空。
点击快速连接 button:
验证没有 shell 访问权限:
由于此帐户配置为仅 SFTP 连接。因此,如果任何用户尝试通过 SSH 连接,身份验证成功后将立即断开连接。用户将收到以下消息:
ssh sftpuser@192.168.1.210
sftpuser@sftp.tecadmin.net's password:
This service allows sftp connections only.
Connection to sftp.tecadmin.net closed.
结论
总之,设置 SFTP 服务器是在计算机之间安全传输文件的好方法。按照本文中的步骤,您可以立即在 Ubuntu 系统上设置自己的 SFTP 服务器。如果您有任何疑问,请随时在下面发表评论,我们将很乐意为您提供帮助。