Автоматическое обновление WordPress sftp - Не удалось найти каталог wp-content

Я пытаюсь настроить автоматическое обновление sftp на Wordpress. Не работает: у меня всегда получается "wp-контент не найден".

У меня есть следующая конфигурация:

  • у каждого сайта есть свой пользователь
  • сайт находится в домашнем каталоге пользователя: /home/{пользователь}/www
  • пользователь привязан к своей домашней директории: /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 работать с моими настройками?

Спасибо заранее!!

1 ответ

Я смог заставить его работать, также синхронизируя пользователя SFTP.

  1. У меня есть это в самом конце моего /etc/ssh/sshd_config:

    Подсистема sftp internal-sftp
    Match Group только для sftp
    ChrootDirectory% h
    ForceCommand internal-sftp
    AllowTcpForwarding нет

... не забудьте закомментировать любой другой экземпляр Subsystem sftp.
Перезапустите sshd.
Также обратите внимание, что это разрешит только SFTP для любого пользователя, который является членом группы 'sftp-only' - без простой оболочки SSH. Если вы также хотите разрешить простые ssh-сессии, попробуйте удалить запись ForceCommand - не пробуйте, но она должна работать.

  1. Добавьте пользователя в группу 'sftp-only', например:

    addgroup только для sftp
    usermod -G sftp-only -a {пользователь}

3. В / etc / passwd установите дом пользователя таким же, как в папке chroot PHP, в вашем случае они оба будут /home/{user}, я думаю, и никаких изменений не потребуется, но в моем случае я Я установил PHP chroot как /home/{user} / php, и я должен изменить его, чтобы он соответствовал / etc / password для записи для {user}.
4. Убедитесь, что любой компонент пути к этому дому принадлежит root, поэтому функция chroot SFTP разрешает вход в систему - в этом случае и / home, и /home/{user} должны принадлежать root.
5. Попробуйте выполнить SFTP с помощью FileZilla - убедитесь, что теперь вы видите только внутри пользователя / chroot.

Для меня, после объединения того, что SFTP и PHP видят как их путь, плагин SFTP теперь работал как ожидалось. Конечно, SFTP {пользователь} должен иметь права на запись в корень WP.

GL

Другие вопросы по тегам