以前,我们所有的 Web 客户都设置为使用 shell /bin/bash(chrooted) 访问他们的 SFTP。截至 2017 年 1 月 17 日,它对每个人都有效。接下来的星期一,即 2017 年 1 月 20 日,它就失效了。此问题影响了所有使用 /bin/bash(chrooted) 作为 shell 的域。
尝试连接时,FTP 错误:读取数据包时出现 EOF。请联系您的网络托管服务提供商寻求帮助。
当尝试通过命令行上的 SSH 连接时,出现错误:无法将 chdir 切换到主目录 /var/www/vhosts/domain.com:没有此文件或目录 /usr/local/psa/bin/chrootsh:没有此文件或目录 与 domain.com 的连接已关闭。
我找不到任何与 Plesk 相关的更新记录,我当然没有更改任何内容。我在 Plesk 历史记录中看到的唯一更新是从 PHP 7 更新到 PHP 7.0.14。我一直在搜索,我找到了以下内容(在下面的示例中,我将实际用户名替换为“username”,将实际域替换为“domain.com”):
据我所知,/etc/passwd 中的 FTP 用户显示正确:用户名:x:10057:1004::/var/www/vhosts/domain.com:/usr/local/psa/bin/chrootsh
用户或组权限没有变化。用户已正确分配给 psacln 组,与之前一样。
据我所知,/var/www/vhosts/chroot 文件夹拥有它所需的一切,并且所有权限和所有权都是正确的。
我已经尝试过 Plesk 的方法:https://support.plesk.com/hc/en-us/articles/213909545--HOWTO-如何将新程序添加到 chrooted-shell 环境模板,没有用。我甚至将 chroot 文件夹重命名为 chroot_old 并重新安装,没有任何区别。
我尝试在 /etc 中的 sshd_config 文件中添加用户特定规则:匹配用户名 ChrootDirectory /var/www/vhosts/chroot 然后重新启动 sshd,不行。
我还从此链接运行了 plesk 修复实用程序:https://docs.plesk.com/en-US/onyx/a...epair-utility/plesk-repair-utility-web.74654/但未找到与我的问题相关的任何内容。
我不知道还要检查什么,将 shell 更改为 /bin/bash 不是一个选项 - 除了安全风险之外,我们还有一些客户使用自动 SSH 连接,需要 chroot 来处理文件/文件夹路径。我的服务器支持陷入困境。
我将非常感激任何人的帮助!谢谢。
答案1
为了解决我的问题,我基本上重新安装了 chroot。我让另一个比我懂得多的人做了这件事,但我请他试着总结一下他做了什么,这样可能会对其他需要做同样事情的人有所帮助:
本质上,他获取了原始 CHROOT 源目录中存在的可执行文件,并将它们复制到我运行上述 Plesk 文档中的脚本时创建的 CHROOT 源目录中:https://support.plesk.com/hc/en-us/articles/213909545--HOWTO-如何将新程序添加到 chrooted-shell 环境模板。
然后,他清理了每个帐户中原始 CHROOT 环境的任何残余(例如,删除了托管帐户 (/var/www/vhosts/somedomain.com) 下的 bin、sbin 等目录)
然后,将 shell 设置为除 chroot 选项之外的任何内容(在 plesk -> 订阅 -> 网站托管访问并保存中)。然后,将 shell 设置为 chroot 选项(/bin/bash(chrooted)。最后一项触发命令以删除并将 chroot 环境添加到目标目录。
我仍在对剩余的域名执行第 2 步和第 3 步,但到目前为止每次都成功了。希望这能帮助遇到类似问题的人。