创建SFTP用户以仅访问一个目录.

Ale*_*ord 26 linux ssh shell sftp sshd

我需要创建一个只能SFTP到特定目录的用户并获取一些信息的副本.这就对了.我一直在网上看,他们提出了有关chroot和修改sshd_config的信息.

到目前为止,我可以

  • 添加用户"useradd sftpexport"
  • 创建它没有主目录"-M"
  • 设置其登录位置"-d/u02/export/cdrs"(存储信息的位置)
  • 不允许它使用ssh"-s/bin/false"

useradd sftpexport -M -d/u02/export/cdrs -s/bin/false

任何人都可以建议编辑的内容,以便用户只能登录并复制文件吗?

csi*_*csi 30

我更喜欢创建一个用户组,sftp并将该组中的用户限制在其主目录中.

首先,编辑您的/etc/ssh/sshd_config文件并在底部添加.

Match Group sftp
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no  
Run Code Online (Sandbox Code Playgroud)

这告诉的OpenSSH的SFTP组中的所有用户都被chroot到他们的主目录(这%h代表了ChrootDirectory命令)

添加一个新的sftp组,将您的用户添加到该组,限制他访问ssh并定义其主目录.

groupadd sftp
usermod username -g sftp
usermod username -s /bin/false
usermod username -d /home/username
Run Code Online (Sandbox Code Playgroud)

重启ssh:

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

如果仍遇到问题,请检查主目录上的目录权限是否正确.根据您的设置适当调整755值.

sudo chmod 755 /home/username
Run Code Online (Sandbox Code Playgroud)

编辑:根据您的问题的详细信息,看起来你只是缺少sshd_config部分.在你的情况下,替换sftpsftpexport.还要确保可以在/u02/export/cdrs目录中访问文件权限.

一个更好的设置(并且甚至比我将建议的更好的设置)是将/u02/export/cdrs目录符号链接到用户主目录.