SFTP(SSH 文件传输协议)是两个系统之间的安全文件传输协议。它通过 SSH 协议运行并共享相同的端口 22。本教程将帮助您在 CentOS 8 和 RedHat 8 系统上创建仅 SFTP 访问用户(无 ssh 访问权限)。用户只能通过SFTP连接服务器并允许访问指定目录。用户无法通过 SSH 访问服务器。按照以下教程在 CentOS 8 和 RHEL 8 上创建仅限 sftp 的帐户。
第 1 步 – 创建帐户
首先,创建一个用于 sftp 访问的用户帐户。在本教程中,我们将创建一个名为sftpuser没有 shell 访问权限。另外,为用户设置一个强密码。
sudo adduser --shell /bin/false sftpuser
sudo passwd sftpuser
Changing password for user sftpuser.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
第 2 步 – 创建目录
现在,创建 sftp 用户可以访问的目录结构。我们将限制新用户只能访问此目录。所以用户无法访问其他目录的文件。
sudo mkdir -p /var/sftp/files
将目录的所有权更改为新创建的 sftp 用户。这样 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 配置 SSH
我们知道SFTP运行在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
保存配置并重新启动 SSH 服务以应用更改。
sudo systemctl restart sshd.service
全部完成后,您的系统已准备好接受所创建帐户的仅 sftp 连接。让我们测试 sftp 连接,并确保用户无权使用 SSH。
第 4 步 – 测试 SFTP 连接
我使用 FileZilla 从 Windows 系统连接到 SFTP 实例。 Linux 桌面用户还可以使用 Filezilla 进行连接。
对于 Linux 服务器,用户可以使用 sftp 命令行实用程序连接到远程 sftp 实例。
sftp sftpuser@sftp.tecadmin.net
Connecting to sftp.tecadmin.net...
sftpuser@sftp.tecadmin.net's password:
sftp>
连接 FileZilla:
该帐户配置为仅 SFTP 连接。因此,如果任何用户尝试通过 SSH 连接,身份验证成功后将立即断开连接。用户将收到以下消息:
ssh sftpuser@sftp.tecadmin.net
sftpuser@sftp.tecadmin.net's password:
This service allows sftp connections only.
Connection to sftp.tecadmin.net closed.
上述消息(此服务仅允许 sftp 连接。)显示用户仅具有 sftp 访问权限。用户无法通过 SSH 连接服务器。