2

我正在尝试在 Wordpress 上配置 sftp 自动更新。它不起作用:我总是得到“找不到 wp-content”。

我的配置如下:

  • 每个站点都有自己的用户
  • 该站点位于用户主目录下:/home/{user}/www
  • 用户被 chroot 到它的主目录:/home/{user}

sftp 对我的用户来说工作正常(使用命令行或 filezilla 等软件)。

在 wordpress 配置中,我得到了以下参数:

define('FS_METHOD', 'ssh2');
define('FTP_HOST', '127.0.0.1:22');
define('FTP_USER', 'test');
define('FTP_PASSWD', '');
define('FTP_PUBKEY','/home/test/wp-rsa.pub');
define('FTP_PRIKEY','/home/test/wp-rsa');

不幸的是,这不起作用。在更新过程中,wordpress 找不到 wp-content 目录。

问题是 ABSPATH 等于 /home/{user}/www 但通过 sftp 它应该只是 /www (由于 chrooted)。我尝试使用 FTP_BASE 配置变量,但在查看 Wordpress 代码后,看起来在 sftp 连接的情况下,它不关心 FTP_BASE 的值:(

我在网上阅读了很多关于 sftp 设置的文章,但似乎没有一篇使用 chrooted 机制。

那么有没有办法让 wordpress 自动更新适用于我的设置?

提前谢谢!!

4

1 回答 1

0

我还可以通过对 SFTP 用户进行 chroot 来使其工作。

  1. 我在 /etc/ssh/sshd_config 的最后有这个:

    子系统 sftp internal-sftp
    Match Group sftp-only
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

...不要忘记注释掉“子系统 sftp”的任何其他实例。
重启sshd。
另请注意,这将只允许属于“sftp-only”组成员的任何用户使用 SFTP - 没有普通的 SSH shell。如果您也想允许普通的 ssh 会话,请尝试删除“ForceCommand”条目 - 尚未尝试但应该可以。

  1. 将用户添加到 'sftp-only' 组,例如:

    addgroup sftp-only
    usermod -G sftp-only -a {user}

3.在 /etc/passwd 中将用户的主页设置为与 PHP 的 chroot 文件夹相同,在您的情况下,它们都是 /home/{user} 我认为不需要更改,但在我的情况下,我将 PHP chroot 设置为 /home/{user}/php,我必须更改它以匹配 /etc/password 中的 {user} 条目。
4. 确保到该主目录的路径的任何组件都归 root 所有,这样 SFTP chroot 功能就允许登录 - 在这种情况下,/home 和 /home/{user} 都必须归 root 所有。
5. 尝试使用 FileZilla 进行 SFTP - 确保您现在只能看到用户的 home/chroot 内部。

对我来说,在统一了 SFTP 和 PHP 所看到的路径之后,SFTP 插件现在可以按预期工作了。当然,SFTP {user} 必须对 WP 根具有写权限。

总帐

于 2015-10-11T15:47:19.297 回答