如何在CentOS/RHEL 7上创建不能Shell访问的SFTP用户

时间:2019-05-19 01:26:15  来源:igfitidea点击:

本教程将在CentOS和RedHat系统上创建SFTP-only用户(不能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 user。以便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

现在在文本编辑器中编辑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 Hyman@theitroad  

Connecting to sftp.theitroad.com...
Hyman@theitroad's password:
sftp>

与FileZilla连接:

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

 ssh Hyman@theitroad  

Hyman@theitroad's password:
This service allows sftp connections only.
Connection to sftp.theitroad.com closed.