Wordpress sftp自动更新 - 找不到wp-content目录

时间:2015-03-19 21:47:22

标签: php wordpress chroot ssh2-sftp

我正在尝试在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自动更新与我的设置一起使用?

提前thx !!

1 个答案:

答案 0 :(得分:0)

我能够通过chroot SFTP用户使其工作。

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

      

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

  2. ...不要忘记注释掉'Subsystem sftp'的任何其他实例 重启sshd。
    另请注意,对于任何“sftp-only”组成员的用户,这只允许SFTP - 没有普通的SSH shell。如果你想允许普通的ssh会话,尝试删除'ForceCommand'条目 - 没有尝试但是应该工作。

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

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

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

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

      GL