我有一个 linode,我通过 ssh throw 终端访问。我需要创建一个 sftp 用户,他的默认目录(也是他唯一可以访问的目录)是/var/www/xxxxxx.com/public_html/directory
现在,我做到了,但是当我尝试连接时,管道损坏或连接被对等方拒绝
我所做的是这样的:
$ adduser --home /var/www/xxxxxx.com/public_html/directory/ username
$ chown username:username /var/www/xxxxxx.com/public_html/directory/
$ chmod 755 /var/www/xxxxxx.com/public_html/directory/
$ nano /etc/ssh/sshd_config
我/etc/ssh/sshd_config
添加了以下几行
Match User username
ChrootDirectory /var/www/xxxxxx.com/public_html/directory/
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
我究竟做错了什么?
编辑:这是实际的错误
EDIT2:这是 filezilla 中的错误
编辑3:auth.log
Oct 15 17:47:11 (none) sshd[361]: fatal: bad ownership or modes for chroot directory "/var/www/xxxxxxxxxxxx.com/public_html/extras_html"
答案1
这个问题已经回答过很多次了,但现在找不到了。答案是RTFM。
长话短说:从man sshd_config
你可以得到这句话:
Chroot目录
指定身份验证后 chroot(2) 的目录路径名。 路径名的所有组成部分必须是 root 拥有的目录,任何其他用户或组都不可写入。 chroot 后,sshd(8) 将工作目录更改为用户的主目录。
其中为您的错误消息提供了解释。修复路径上的 ACL 将解决您的问题。
答案2
我解决了。问题是因为我这样做了:
$ chown user:user /var/www/xxxxxx.com/public_html/directory/
我必须做的是:
$chown root:root /var/www/xxxxxx.com/public_html/directory/
然后,在“目录”内,我为具有 777 权限的用户创建了一个目录(这不是更好的方法,但它有效)。
“被同行拒绝”错误是因为 /directory 必须具有 755 权限。