Pourquoi ne pas installer de serveur FTP ? Et bien tout simplement parce que le protocole FTP n’est pas du tout sécurisé :
les mots de passe sont envoyés en clair sur le réseau, il n’y a aucun chiffrement appliqué sur la connexion et il existe 1001 manières d’en forcer l’accès.
Du coup, je me dis que l’on peut très bien s’en passer. Comme il faut bien que je mette des fichiers sur le serveur ou mettre à jour le site, nous allons utiliser SSH qui est un protocole sécurisé.
Le hic, c’est que WordPress ne propose que deux choix par défaut pour se mettre à jour : FTP et SFTP.

Voici comment y ajouter l’option SSH. Cela ne prend que quelques minutes à configurer sur le serveur.
Etape 1 : installation de libssh
Tout d’abord, logguez-vous sur le serveur comme administrateur. Nous avons besoin d’installer la librairie SSH :
Code : Tout sélectionner
apt-get install libssh2-1-dev libssh2-1 libssh2-php
Ensuite nous installons l’extension SSH2 pour Apache/PHP :
Code : Tout sélectionner
pecl install -f ssh2
Code : Tout sélectionner
echo 'extension=ssh2.so' > /etc/php5/conf.d/ssh2.ini
Code : Tout sélectionner
/etc/init.d/apache2 restart
Pour se connecter au serveur SSH – même si la connexion s’établit du serveur lui-même – il nous faut générer les clés SSH, privée et publique.
Code : Tout sélectionner
cd .ssh
ssh-keygen
Code : Tout sélectionner
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
vb:3b:5g:94:f3:1e:d3:9f:78:45:73:ab:8d:9f:v2:dd user@server
Nous avons besoin de créer un fichier authorized_keys pour que le serveur sache que notre clé est de confiance. Cela nous permet également de nous identifier sans mot de passe.
Code : Tout sélectionner
cp id_rsa.pub authorized_keys
Dernier probème à régler : l’utilisateur Apache a besoin d’être capable de lire la clé publique ET la clé privée. Or normalement ces clés ne sont lisibles que par l’utilisateur,
dans son répertoire .ssh/ sécurisé. Nous allons donc copier les clés dans le répertoire /etc/wordpress/ et les rendre lisible au groupe www-data, c’est-à-dire le groupe d’Apache :
Code : Tout sélectionner
cd /etc
mkdir wordpress
cp /home/user/.ssh/id_rsa* wordpress/
chgrp www-data wordpress/*
Code : Tout sélectionner
chmod 640 wordpress/*
A ce stade, l’option SSH apparaît dans WordPress mais il faut retaper les informations de connexion (mot de passe, adresse du serveur)
à chaque fois que l’on veut mettre quelque chose à jour. Nous pouvons rendre ce processus totalement transparent en éditant le fichier wp-config.php de WordPress. Ajoutez-y ces lignes :
Code : Tout sélectionner
define('FTP_PUBKEY','/etc/wordpress/id_rsa.pub');
define('FTP_PRIKEY','/etc/wordpress/id_rsa');
define('FTP_USER','user');
define('FTP_PASS','');
define('FTP_HOST','localhost:22');

Le Partage Est Une Force !!!