Usando SSH para actualizar WordPress

En estos días me ha tocado atender un nuevo cliente, la gente de 4lochas.com, un portal de música y variedades que tiene rato hosteado con nosotros, pero que cambió recientemente de administración. Luego de una buena cantidad de setbacks (menores y mayores), pusimos a andar el sitio. Y, si bien es cierto que hay un par de caídas de vez en cuando, el sitio está operativo la mayor parte del tiempo. Esas cosas se van a ir corrigiendo a medida que se van afinando los detalles.

Entre las cosas que me solicitaba, estaban las de actualizar plugins y temas y esas cosas. Obviamente, lo primero que se hace con un cliente nuevo es darle sus credenciales de usuario. Pero, en el caso de mis servidores, hay una configuración estándar de ssh, en la que PasswordAuthentication está desactivado, y sólo puedes loguearte si tu llave pública está añadida en el authorized_keys correspondiente. Por lo que el cliente debe generar llaves ssh para poder añadirlas a su archivos de llaves autorizadas. Desafortunadamente, putty no es particularmente sencillo en su uso de llaves. Al menos, no para mí que sólo lo he usado un par de ocasiones, y nunca desde mis equipos.

En fin, revisando por el internés alguna forma de automatizar el proceso de autenticación vía llaves ssh en wordpress, conseguí este artículo en el que explican paso a paso lo que debe hacerse. La cosa es que está hecho para distribuciones basadas en RedHat.

No voy a ahondar mucho en cómo se instala ssh, cómo creas llaves públicas, cómo accedes a ellas y cómo las llevas al servidor. De esos hay muchísimos artículos por toda la internet que está a un googleo de distancia. Lo que sí voy a decirles es qué necesitan desde ese punto en adelante para tener el wordpress andando en [una distro basada en] debian.

Lo primero, instalar libssh2-php

apt-get install libssh2-php

Luego, añadir esto en su wp-config.php. Les sugiero que las añadan luego de los salt strings.


define('FTP_PUBKEY','/home/tu_usuario/.ssh/id_rsa.pub');
define('FTP_PRIKEY','/home/tu_usuario/.ssh/id_rsa');
define('FTP_USER','tu_usuario');
define('FTP_PASS','hackme');
define('FTP_HOST','127.0.0.1:22');

Donde:
FTP_PUBKEY: Es la llave pública. Usualmente se aloja en ~/.ssh
FTP_PRIVKEY: Es la llave privada. Usualmente se aloja en ~/.ssh
FTP_USER: Obviamente, tu usuario
FTP_PASS: El password.
FTP_HOST: En este caso, 127.0.0.1, porque se supone que estás descargando local en tu servidor. Puedes usar un TLD o incluso un subdominio.

Ya con eso no deberías requerir configurar nada más para actualizar o instalar cualquier cosa en WordPress. De hecho, lo probé actualizando a WP4, añadiendo un nuevo tema e instalando plugins y actualizaciones requeridas sin ningún inconveniente.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *