У меня возникла проблема с WordPress и ssh. По сути, я пытаюсь включить автоматическое обновление с Wordpress через SFTP. Я следовал инструкциям на Эта тема на DigitalOcean.com вверх У меня есть пользователь, которого зовут wpftp
.
SSHd на сервер как sudoer, затем я вхожу на сервер как этот пользователь, используя login wpftp
и ввел пароль. Я тогда побежал ssh-keygen -t rsa -b 4096
и exit
.
Вернувшись в качестве пользователя sudo, я запустил chown -R wpftp:www-data .ssh/
чем chmod 0640 .ssh/*
чем chmod 0700 .ssh
ls -lah
дает мне следующее для .ssh
папка
drwx------ 2 wpftp www-data 4.0K Jan 14 09:00 .ssh
пока выглядит хорошо…
cd .ssh/
cp id_rsa.pub authorized_keys
chown wpftp:www-data *
дает мне следующее
-rw-r----- 1 wpftp www-data 747 Jan 14 09:04 authorized_keys
-rw-r----- 1 wpftp www-data 3.2K Jan 14 09:00 id_rsa
-rw-r----- 1 wpftp www-data 747 Jan 14 09:00 id_rsa.pub
Добавлено from="127.0.0.1"
к authorized_keys
в начале
Вставил следующее в wp-config.php
define('FTP_PUBKEY','/home/wpftp/.ssh/id_rsa.pub');
define('FTP_PRIKEY','/home/wpftp/.ssh/id_rsa');
define('FTP_USER','wpftp');
define('FTP_PASS','');
define('FTP_HOST','127.0.0.1:22');
У меня также была альтернативная конфигурация, которую я пробовал, тоже не сработало
define('FS_METHOD', 'ssh2');
define('FTP_BASE', '/usr/share/nginx/wordpress');
define('FTP_CONTENT_DIR', '/usr/share/nginx/wordpress/wp-content/');
define('FTP_PLUGIN_DIR ', '/usr/share/nginx/wordpress/wp-content/plugins/');
define('FTP_PUBKEY', '/home/wpftp/.ssh/id_rsa.pub');
define('FTP_PRIKEY', '/home/wpftp/.ssh/id_rsa');
define('FTP_USER', 'wpftp');
define('FTP_PASS', '');
define('FTP_HOST', '127.0.0.1:22');
define('FTP_SSL', true);
Я получаю следующую ошибку в панели администратора wordpress:
Public and Private keys incorrect for wpftp
я смотрю на /var/log/auth.log
и это говорит
Jan 14 09:09:17 localhost sshd[18313]: Received disconnect from 127.0.0.1: 11: PECL/ssh2 (http://pecl.php.net/packages/ssh2) [preauth]
Jan 14 09:09:20 localhost sshd[18315]: Received disconnect from 127.0.0.1: 11: PECL/ssh2 (http://pecl.php.net/packages/ssh2) [preauth]
Jan 14 09:09:48 localhost sshd[18318]: Received disconnect from 127.0.0.1: 11: PECL/ssh2 (http://pecl.php.net/packages/ssh2) [preauth]
Затем я рассмотрел общие проблемы упомянутая выше статья
1. Неправильные разрешения для открытого ключа, закрытого ключа и каталогов, которые их содержат.
/home/wpftp/.ssh/# ls -lah | grep .ssh
drwx------ 2 wpftp www-data 4.0K Jan 14 09:04 .ssh
/home/wpftp/.ssh/# cd .ssh
/home/wpftp/.ssh/# ls -lah
-rw-r----- 1 wpftp www-data 764 Jan 14 09:06 authorized_keys
-rw-r----- 1 wpftp www-data 3.2K Jan 14 09:00 id_rsa
-rw-r----- 1 wpftp www-data 747 Jan 14 09:00 id_rsa.pub
Еще я проверил пользователя nginx
# ps aux | grep nginx
root nginx: master process /usr/sbin/nginx
www-data nginx: worker process
www-data nginx: worker process
#ps aux | grep php
root 18274 0.0 0.1 253360 5476 ? Ss 09:07 0:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
www-data php-fpm: pool www
www-data php-fpm: pool www
www-data php-fpm: pool www
(several more pools follow)
Я также проверил php5-fpm
и nginx
журналы ошибок, там ничего не всплывает
Неправильное форматирование файла. Если ваш публичный или закрытый ключ имеет проблемы с форматированием, WordPress отклонит ключ и откажется его использовать. То же самое и с файлом ~ / .ssh / authorized_keys. Я проверил id_dsa.pub, и все в порядке, я могу ssh wpftp@localhost
и попади без проблем ...
Эта проблема была довольно неприятной, поскольку ошибки не носят описательный характер. Я проверил несколько тем и попытался применить исправления, но безрезультатно. Я установил библиотеку ssh2 с помощью apt-get install ... Есть мысли?
Другие ссылки, которые я проверил:
Проблема с обновлением Wordpress SSH
http://wordpress.org/support/topic/private-key-incorrect-for-user-error
http://wordpress.org/support/topic/private-key-incorrect-for-wordpress
http://chocotech.blogspot.com/2013/02/update-wordpress-by-using-ssh2-sftp.html
Зачем использовать SFTP?
Дайте WordPress разрешение на запись, и тогда проблема будет решена.
Вы сказали, что используете Nginx, затем установите
chown -r nginx:nginx /var/www/html
заменить / var / www / html с вашим директория сайта path, чтобы WordPress мог обновляться автоматически.