如何创建权限极其有限的 SFTP (SSH) 用户

Blu*_*rry 8 server ssh permissions sftp

我在 Ubuntu Server 14.04 上运行服务器。我想创建一个能够通过 sftp 连接的用户,下载 1 个文件并终止连接。用户不应该做任何其他事情。浏览系统文件或设置或命令行条目,什么都没有。登录,下载文件,gg。文件更新后,登录下载,gg。该文件每次都在同一目录中,并且每次都具有相同的名称但会更新。

编辑:我正在尝试实施您的解决方案,但我发现了一些问题:在我的配置上的 ssh 配置文件中,有一行带有“允许组 sshdusers”。我添加了 sftp_users。但前面还有另一个问题。sudo chown root.root /ubuntu/ 对我来说不是最佳选择,因为 root 无法 ssh 并将“ubuntu”必须下载的文件写入目录(我们将其称为 user1。我希望 user1 能够写入目录和 ubuntu 只读。如果我更改 sudo chown user1.user1 /ubuntu/ 并且我尝试与用户 ubuntu 进行 sftp 连接失败。如果我像你一样将其保留为 root,我可以连接,但我看不到currentdirectory 我在filezilla 上只看到/ 和empy。我什至将user1 添加到sftp_users,但仍然没有成功。

非常感谢

270*_*974 11

开始吧

创建用户 ubuntu

sudo useradd ubuntu
Run Code Online (Sandbox Code Playgroud)

制作密码

sudo passwd ubuntu
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Run Code Online (Sandbox Code Playgroud)

创建仅用于 SFTP 的组

xxx@xxx:~$ sudo groupadd sftp_users 
Run Code Online (Sandbox Code Playgroud)

添加到仅 SFTP 组的用户“ubuntu”

xxx@xxx:~$ sudo usermod -G sftp_users ubuntu 
Run Code Online (Sandbox Code Playgroud)

制作目录以供sftp访问

sudo mkdir /ubuntu
Run Code Online (Sandbox Code Playgroud)

更改所有者,因为读/写权限

sudo chown root.root /ubuntu/
Run Code Online (Sandbox Code Playgroud)

添加权限

sudo chmod 755 /ubuntu/
Run Code Online (Sandbox Code Playgroud)

编辑 /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

注释掉并添加如下一行

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Run Code Online (Sandbox Code Playgroud)

最后添加

Match Group sftp_users
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory /ubuntu
  ForceCommand internal-sftp
Run Code Online (Sandbox Code Playgroud)

重启ssh服务

sudo service ssh restart
Run Code Online (Sandbox Code Playgroud)

通过此配置,您可以通过 ssh 进入文件夹ubuntu并获取文件。不能putdelete

尝试。

编辑 1

要在右侧文件夹中进行 sftp 编辑/etc/passwd。更改用户的行ubuntu看起来像这样

sudo nano /etc/passwd

 ubuntu:x:1001:1001::/ubuntu:
Run Code Online (Sandbox Code Playgroud)

这会将用户 ubuntu 主文件夹更改为您的 sftp 服务器文件夹。

启用root帐户不是一个好主意。

您可以使用 SSH 连接到服务器user1

如果您添加用户user1sudoer group您将能够在文件夹中写入/ubuntu/并设置适当的权限

sudo adduser user1 sudo
Run Code Online (Sandbox Code Playgroud)

制作文件夹,写入文件夹ubuntu。操作后,您必须为 user 设置权限ubuntu。最简单的方法是再次将权限设置为 755

sudo chmod 755 -R /ubuntu/
Run Code Online (Sandbox Code Playgroud)

-R - 选项将为用户提供所有文件和目录的读取权限 ubuntu