如何在Linux中创建和限制SFTP用户

创建用户帐户

我们将创建一个SFTP帐户,该帐户只能用于访问文件。
这将确保服务器不容易受到其他威胁的影响。

创建一个名为的SFTP帐户 sftpuser

sudo adduser --shell /bin/false sftpuser

出现提示时,键入密码和其他帐户详细信息。

Adding user `sftpuser' . 
Adding new group `sftpuser' (1001) . 
Adding new user `sftpuser' (1001) with group `sftpuser' . 
Creating home directory `/home/sftpuser' . 
Copying files from `/etc/skel' . 
New password: 
Retype new password: 
passwd: password updated successfully
Changing the user information for sftpuser
Enter the new value, or press ENTER for the default
	Full Name []: sFTP User
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] y

上面创建的用户没有shell访问权限。
这意味着用户将无法像普通用户那样登录服务器。

配置SSH.

如果未安装SSH服务器,请运行以下命令安装它。

sudo apt update
sudo apt install openssh-server

默认情况下,SSH主要配置文件位于/etc/ssh/sshd_config

打开SSH配置文件。

sudo nano /etc/ssh/sshd_config

在SSH配置文件的末尾,复制并粘贴下面的行并保存。

Match User sftpuser
	ForceCommand internal-sftp
	PasswordAuthentication yes
	ChrootDirectory /var/sftp
	PermitTunnel no
	AllowAgentForwarding no
	AllowTcpForwarding no
	X11Forwarding no

保存文件并退出。

以下是上面的配置选项的说明:

  • Match User:匹配用户SFTPUSER
  • forcecommand内部sft p:强制执行sftp,只有没有shell的访问权限。
  • PasswordAuthentication是:允许用户的密码身份验证。
  • chrootdirectory/var/sftp:限制对/var/sftp中的目录访问权限。
  • allowAgentForAdding否:允许不允许使用SSH代理转发。
  • allowtcpforwarding否不允许转帐转发。
  • X11Forwarding否不允许图形应用程序。

重新启动SSH服务器使更改生效。

sudo systemctl restart ssh

创建一个主目录

为帐户创建一个SFTP主目录:

sudo mkdir -p /var/sftp/downloads

设置只允许用户访问/var/sftp/downloads文件夹

sudo chown sftpuser:sftpuser /var/sftp/downloads
sudo chown root:root /var/sftp
sudo chmod 755 /var/sftp
日期:2020-07-07 20:55:16 来源:oir作者:oir