he seguidoeste tutorial(que funcionó para mí en varios VPS) para configurar una forma segura de instalar y actualizar temas y complementos en Wordpress. Básicamente:
sudo adduser wp-user
cd /var/www
sudo chown -R wp-user:wp-user /var/www/
sudo su - wp-user
ssh-keygen -t rsa -b 4096
exit
sudo chown wp-user:www-data /home/wp-user/wp_rsa*
sudo chmod 0640 /home/wp-user/wp_rsa*
sudo mkdir /home/wp-user/.ssh
sudo chown wp-user:wp-user /home/wp-user/.ssh/
sudo chmod 0700 /home/wp-user/.ssh/
sudo cp /home/wp-user/wp_rsa.pub /home/wp-user/.ssh/authorized_keys
sudo chown wp-user:wp-user /home/wp-user/.ssh/authorized_keys
sudo chmod 0644 /home/wp-user/.ssh/authorized_keys
sudo nano /home/wp-user/.ssh/authorized_keys
desde="127.0.0.1" ssh-rsa...
sudo apt-get update
sudo apt-get install php5-dev libssh2-1-dev libssh2-php
sudo nano /var/www/wp-config.php
Agregar:
define('FTP_PUBKEY','/home/wp-user/wp_rsa.pub');
define('FTP_PRIKEY','/home/wp-user/wp_rsa');
define('FTP_USER','wp-user');
define('FTP_PASS','');
define('FTP_HOST','127.0.0.1:22');
Y finalmente:
sudo service apache2 restart
Por alguna razón, recibo el mensaje:
Claves públicas y privadas incorrectas para wp-user
Buscando una respuesta, he vistoesta pregunta, pero ninguna de las respuestas me ha funcionado.
Primero, puse los archivos en /home/wp-user
el directorio, pero también probé en /home/wp-user/.ssh
. Esto es lo que tengo ahora mismo:
ls -la /home/wp-user/.ssh
drwx------ 2 wp-user wp-user 4096 Mar 1 15:02 .
drwxr-xr-x 3 wp-user wp-user 4096 Mar 1 14:58 ..
-rw-r--r-- 1 wp-user wp-user 742 Mar 1 15:02 authorized_keys
-rw-r----- 1 wp-user www-data 3247 Mar 1 14:58 wp_rsa
-rw-r----- 1 wp-user www-data 742 Mar 1 14:58 wp_rsa.pub
Y:
define('FTP_PUBKEY','/home/wp-user/.ssh/wp_rsa.pub');
define('FTP_PRIKEY','/home/wp-user/.ssh/wp_rsa');
define('FTP_USER','wp-user');
define('FTP_PASS','');
define('FTP_HOST','127.0.0.1:miCustomPortForSSH');
Puedo ver este resultado auth.log
cada vez que intento conectarme:
Mar 1 14:37:51 vpsxxxx sshd[2430]: Set /proc/self/oom_score_adj to -800
Mar 1 14:37:51 vpsxxxx sshd[2430]: Connection from 127.0.0.1 port 56103
Mar 1 14:37:51 vpsxxxx sshd[2430]: Received disconnect from 127.0.0.1: 11: PECL/ssh2 (http://pecl.php.net/packages/ssh2) [preauth]
con puerto diferente cada vez:
Mar 1 14:38:16 vpsxxxx sshd[2435]: Set /proc/self/oom_score_adj to -800
Mar 1 14:38:16 vpsxxxx sshd[2435]: Connection from 127.0.0.1 port 56128
Mar 1 14:38:16 vpsxxxx sshd[2435]: Received disconnect from 127.0.0.1: 11: PECL/ssh2 (http://pecl.php.net/packages/ssh2) [preauth]
Estoy usando Apache2 y Nginx como servidor proxy, pero los archivos de registro no revelan nada. ¿Alguna idea?
Respuesta1
Parece que la clave privada está demasiado abierta ya que es legible por un grupo. Intente eliminar los permisos de lectura del grupo.
chmod g-r wp_rsa
y mira cómo va eso.
Respuesta2
Si estás usando elphp_admin_value open_basedirdirectiva, las claves deben estar en un directorio que esté incluido en las rutas enumeradas.
Respuesta3
En dos servidores Debian 10 tuve que agregar -m PEM
un parámetro a ssh-keygen.
De lo contrario, la clave funcionó cuando usé SSH desde la terminal, pero no funcionó en Wordpress, lo que resultó en el mismo mensaje de desconexión que apareció en su registro. En cambio, ssh-keygen -m PEM -t rsa
funcionó sin ningún problema.
Además, tuve que habilitarlo allow_url_fopen = On
en PHP; de lo contrario, Wordpress no pudo encontrar el directorio wp-content.
Respuesta4
Estoy usando www-data como propietario y agregar la siguiente línea a wp-config.php lo resolvió.
define( 'FS_METHOD', 'direct' );