29

我需要创建一个只能 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

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

4

2 回答 2

37

我更喜欢创建一个用户组sftp并将该组中的用户限制在他们的主目录中。

首先,编辑您的/etc/ssh/sshd_config文件并将其添加到底部。

Match Group sftp
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no  

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

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

groupadd sftp
usermod username -g sftp
usermod username -s /bin/false
usermod username -d /home/username

重启ssh:

sudo service ssh restart

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

sudo chmod 755 /home/username

编辑:根据您问题的详细信息,您似乎只是缺少 sshd_config 部分。在您的情况下,请替换sftpsftpexport. 还要确保该/u02/export/cdrs目录上的文件权限是可访问的。

一个更好的设置(还有比我要建议的更好的设置)是将/u02/export/cdrs目录符号链接到用户主目录。

于 2014-04-16T04:23:18.110 回答
3

您可能需要为该用户添加一个受限外壳,才能将一些文件放在那里。您可以为此使用rssh工具。

usermod -s /usr/bin/rssh sftpexport

在 config 中启用允许的协议/etc/rssh.conf

于 2014-04-16T05:28:40.807 回答