Автоматическое обновление 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.
У меня есть это в самом конце моего /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 - не пробуйте, но она должна работать.
- Добавьте пользователя в группу '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