本教程将帮助您在 CentOS 和 RedHat 系统上创建仅 SFTP 用户(无 ssh 访问权限)。用户只能通过SFTP访问连接服务器,并允许访问指定目录。用户无法通过 SSH 访问服务器。按照以下教程创建仅限 sftp 的帐户。
第 1 步 – 创建帐户
首先,创建一个用于 sftp 访问的用户帐户。下面的命令将创建名为sftpuser没有 shell 访问权限。
sudo adduser --shell /bin/false sftpuser
sudo passwd sftpuser
第 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
现在在文本编辑器中编辑 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
第 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.