Nit*_*esh 24 sftp chroot home-directory
我一直在尝试建立一个 SFTP 服务器,让多个用户 chroot 进入他们的主目录。我遵循了本指南(Archive.org 链接)上的建议,然后在用户目录上执行了以下命令
chown root:root /home/user/
chmod 755 /home/user/
Run Code Online (Sandbox Code Playgroud)
每个用户的主目录中都有一个名为 的附加文件夹,该文件夹public
归其用户所有,以便他们可以根据需要创建目录以及上传和删除文件。(这是在我之前提到的指南中建议的)
现在,当我执行时sftp -P 435 user@localhost
,出现此错误:
写入失败:管道损坏
无法读取数据包:对等方重置连接
我如何从这里开始?最终的想法是让其他机器上的每个用户使用 FileZilla 登录到他们的 chroot 主目录,然后能够上传目录和文件。所有这些都在 SFTP 中(因为它更安全)
Lek*_*eyn 29
那篇文章还描述了如何获得 chroot 的 shell 访问权限,但由于您只想要一个 sftp 帐户,只需按照以下说明操作:
编辑/etc/ssh/sshd_config
并添加以下行:
SubSystem sftp internal-sftp
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Run Code Online (Sandbox Code Playgroud)
找到该行UsePAM yes
并对其进行注释:
#UsePAM yes
Run Code Online (Sandbox Code Playgroud)
如果不禁用此功能,我的 SSH 服务器将在重新加载/重新启动时崩溃。因为我不需要 PAM 的花哨功能,所以这很好。
为了提高安全性,请限制可以登录的用户。如果您忘记将 SFTP 用户添加到sftp
组中,您可以授予他们免费的 shell 访问权限。不是一个很好的场景。因为 SSH 不能组合AllowUsers
和AllowGroups
(登录必须满足这两个规则),所以您必须创建一个额外的组,比如ssh-users
. 添加允许youruser
通过 SSH登录的用户(如下):
sudo groupadd ssh-users
sudo gpasswd -a youruser ssh-users
Run Code Online (Sandbox Code Playgroud)
并将下一行添加到/etc/ssh/sshd_config
:
AllowGroups ssh-users sftp
Run Code Online (Sandbox Code Playgroud)
现在继续修改用户主目录的权限以允许 chroot(示例用户sftp-user
):
sudo chown root:sftp-user /home/sftp-user
sudo chmod 750 /home/sftp-user
Run Code Online (Sandbox Code Playgroud)
创建一个目录,可以在其中sftp-user
自由放置任何文件:
sudo mkdir /home/sftp-user/public
sudo chown sftp-user: /home/sftp-user/public
sudo chmod 750 /home/sftp-user/public
Run Code Online (Sandbox Code Playgroud)
如果您遇到任何问题,请检查/var/log/syslog
并/var/log/auth.log
了解详细信息。运行ssh
或sftp
使用-vvv
调试消息的选项。对于sftp
,该选项必须出现在主机之前,如sftp -vvv user@host
。
小智 12
只是想在目录树上添加该文件夹权限需要以某种方式设置。
sshd 严格的所有权/权限要求规定 chroot 路径中的每个目录都必须由 root 拥有并且只能由所有者写入。
我遇到了一个非常相似的错误,修复我的目录权限为我解决了这个问题。
小智 10
我正在使用 Ubuntu LTS 12.04,在经历了很多痛苦之后,这对我有用。
我的设置 /etc/ssh/sshd_config
Subsystem sftp internal-sftp -f AUTH -l VERBOSE
UsePAM yes
Match group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Run Code Online (Sandbox Code Playgroud)
创建组 sftp:
groupadd sftp
使用附加的新 sftp 组直接创建用户:
sudo useradd -d /ftpusers/HomeFolder -m UserName -g sftp -s /bin/false
为 sftp 设置与 ssh 一起使用的权限:
chown root:root HomeFolder
chmod 755 HomeFolder
重启服务:
service ssh restart
请注意,必须为新 sftp 用户的主文件夹赋予 root 所有者。
归档时间: |
|
查看次数: |
134366 次 |
最近记录: |