
Me encontré con un problema con WordPress y ssh. Básicamente, estoy intentando habilitar la actualización automática con Wordpress a través de SFTP. He seguido las instrucciones deEste artículo en DigitalOcean.comarriba tengo un usuario llamado wpftp
.
SSHd en el servidor como sudoer, luego inicio sesión en el servidor como ese usuario usando login wpftp
e ingresé la contraseña. Entonces corrí ssh-keygen -t rsa -b 4096
y exit
.
De vuelta como usuario de sudo, ejecuté chown -R wpftp:www-data .ssh/
than chmod 0640 .ssh/*
thanchmod 0700 .ssh
ls -lah
me da lo siguiente para .ssh
la carpeta
drwx------ 2 wpftp www-data 4.0K Jan 14 09:00 .ssh
se ve bien hasta ahora …
cd .ssh/
cp id_rsa.pub authorized_keys
chown wpftp:www-data *
me da lo siguiente
-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
Agregado from="127.0.0.1"
al authorized_keys
principio
Introdujo lo siguiente en 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');
También tenía una configuración alternativa que probé y tampoco funcionó.
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);
Recibo el siguiente error en el panel de administración de WordPress:
Public and Private keys incorrect for wpftp
miro /var/log/auth.log
y dice
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]
Luego repasé los problemas comunes en elartículo mencionado anteriormente
1 . Permisos inadecuados sobre la clave pública, la clave privada y los directorios que las contienen.
/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
También verifiqué el usuario de 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)
También revisé los registros de errores php5-fpm
y nginx
, no aparece nada allí.
Formato de archivo inadecuado. Si su clave pública o privada tiene problemas de formato, WordPress rechazará la clave y se negará a usarla. Lo mismo ocurre con el archivo ~/.ssh/authorized_keys.
Revisé id_dsa.pub y estaba bien, puedo hacerlo ssh wpftp@localhost
y no tengo ningún problema...
Este problema ha sido bastante frustrante ya que los errores no son descriptivos. Revisé varios hilos e intenté aplicar las correcciones, pero fue en vano. He instalado la biblioteca ssh2 con apt-get install... ¿Alguna idea?
Otras referencias que revisé:
Problema de actualización de 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
Respuesta1
¿Por qué utilizar SFTP?
Dale permiso a WordPress para escribir y se solucionará.
Dijiste que estás usando Nginx y luego configuras
chown -r nginx:nginx /var/www/html
reemplazar/var/www/htmlcon tudirectorio del sitioruta para que WordPress pueda actualizarse automáticamente.