Автоматическое обновление 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 работать с моими настройками?

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

2

Решение

Я смог заставить его работать, также синхронизируя пользователя 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», например:

    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 — убедитесь, что теперь вы видите только внутри home / chroot пользователя.

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

GL

0

Другие решения

Других решений пока нет …