如何在CentOS/RHEL上创建没有Shell访问的SFTP用户
SFTP (SSH文件传输协议)是两个系统之间的安全文件传输协议。
它在SSH协议上运行,并共享相同的端口22。
本教程将在CentOS 8和RedHat 8系统上创建只访问SFTP的用户(不访问ssh)。
用户只能使用SFTP连接服务器,并允许访问指定的目录。
用户无法通过SSH访问服务器。
按照下面的教程在CentOS 8和RHEL 8上创建sftp only帐户。
步骤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。
根用户对该访问具有读/写访问权。
组成员和其他帐户只有读取和执行权限。
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 Hyman@theitroad(/cdn-cgi/l/Hyman)
Connecting to sftp.theitroad.com... Hyman@theitroad(/cdn-cgi/l/Hyman)'s password: sftp>
连接到FileZilla:
此帐户配置为仅用于SFTP连接。
因此,如果任何用户尝试通过SSH连接,在成功身份验证后将立即断开连接。
用户将得到以下信息:
ssh Hyman@theitroad(/cdn-cgi/l/Hyman)
Hyman@theitroad(/cdn-cgi/l/Hyman)'s password: This service allows sftp connections only. Connection to sftp.theitroad.com closed.
上面的消息(此服务只允许sftp连接)表明用户只允许sftp访问。
用户无法通过SSH连接服务器。