我有一个在自定义端口上使用 SSH 的家庭 Web 服务器。我发现如果我访问sftp://domainname.tld:port
我的整个文件系统,它都是可见的,任何人都可以下载任何文件。我想将其 chroot 到我的public_html
目录中,但重新启动服务后,我的添加似乎没有任何区别。我在 sshd_config 中添加的内容如下:
Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
ChrootDirectory /path/public_html/
ForceCommand internal-sftp
AllowTcpForwarding no
如果能提供一个可以让我阅读 SSH 配置文档的链接,我将非常感激。
编辑:我无意中遗漏了一条重要信息(我认为)。我说的是当有人sftp://domainname.tld:port
通过 Web 浏览器访问时,而不是通过 SFTP 程序访问时。我在 Linux Mint 上的 Firefox 中遇到了这种行为。
答案1
添加类似的内容:
Match user restricted_user
ChrootDirectory /home/chrooted
ForceCommand internal-sftp
到/etc/ssh/sshd_config
。
restricted_user
能不是继续使用 ssh shell :
$ ssh -o Port=some_port [email protected]
[email protected]'s password:
This service allows sftp connections only.
Connection to domainname.tld closed.
看来 ssh 对目录的访问权限非常挑剔。如果连接失败并出现错误Write failed: Connection reset by peer
,通常可以查看/var/log/auth
或/var/log/secure
了解发生了什么。
答案2
应该如此。SFTP 通过 SSH 运行,因此您应该能够看到您以用户身份登录且具有读取权限的任何文件。即使您进行了 chroot SFTP,用户也可以使用 SSH 登录并读取文件。
任何人都可以下载任何文件
不正确;任何人使用系统上的用户帐户可以下载任何文件其用户有权限阅读。
SFTP 不像 FTP 那样具有匿名访问权限,并且所采取的任何操作都可以始终与系统上注册的特定用户相关联。如果您想保护系统安全,请使用强密码、限制可以通过 SSH 连接的 IP 范围、注意失败的登录尝试等。