Mémoriser les identifiants FTP sous WordPress

Mis à jour le :

Certains hébergements mettent en place des restrictions de sécurité vous demandant de ressaisir à chaque installation ou mise à jour de WordPress ou d’un plugin, vos identifiants FTP.

Rien de plus pénible que de retrouver des mots de passe qui sont bien souvent stockés en clair dans un mail. Cette astuce vous montrera comment faire en sorte que WordPress s’en souvienne d’une fois sur l’autre.

A l’aide d’un client FTP, ouvrez le fichier wp-config.php – celui-là que vous avez créé lors de l’installation de WordPress.

Ajoutez ensuite les lignes de code suivantes au-dessus de la ligne /* C’est tout, ne touchez pas à ce qui suit ! Bonne publication. */ (/* That's all, stop editing! Happy publishing. */ si votre fichier est en anglais) :

define('FTP_HOST', 'ftp.wpchannel.com');
define('FTP_USER', 'utilisateur');
define('FTP_PASS', 'motdepasse');
define('FTP_SSL', true); // Si vous utilisez une connexion chiffrée

Bien évidemment, il vous faut remplacer les 3 premières lignes de code par :

  1. FTP_HOST : l’hôte FTP de votre site, suivi de deux-points et du numéro de port si votre serveur n’utilise pas le port 21 (par exemple ftp.example.com:2121) ;
  2. FTP_USER : le nom d’utilisateur pour se connecter au serveur ;
  3. FTP_PASS : le mot de passe pour se connecter au serveur ;

La dernière ligne active le FTPS, c’est-à-dire le FTP chiffré par SSL/TLS : sans elle, votre identifiant et votre mot de passe circulent en clair entre votre site et le serveur FTP. Si votre hébergeur n’accepte pas le FTPS, WordPress affiche « Le couple identifiant/mot de passe est incorrect pour… », même si vos identifiants sont bons. Plutôt que de passer la valeur à false, demandez-lui alors s’il propose une connexion chiffrée, ou tournez-vous vers les solutions décrites plus bas.

Notez que FTP_SSL n’est pris en compte qu’avec l’extension FTP de PHP (méthode ftpext) : avec la méthode de secours ftpsockets, WordPress l’ignore et se connecte en clair. Cette constante concerne par ailleurs le FTPS, et non le SFTP, qui passe par SSH.

Bon à savoir : WordPress retient déjà d’une fois sur l’autre le nom de l’hôte, l’identifiant et le type de connexion saisis dans le formulaire Informations de connexion. Seul le mot de passe n’est jamais enregistré, comme l’indique la mention « Le mot de passe ne sera pas stocké sur le serveur. » C’est donc surtout lui que la constante FTP_PASS vous évite de ressaisir.

Écran Extensions > Ajouter une extension de WordPress, assombri après un clic sur Installer maintenant (recherche Classic Editor) : la fenêtre Informations de connexion explique que WordPress a besoin d’accéder au serveur web et présente les champs Nom de l’hôte (ftp.example.com), Identifiant FTP (demo-ftp) et Mot de passe FTP (vide) avec la mention « Le mot de passe ne sera pas stocké sur le serveur. », le choix Type de connexion entre FTP et FTPS (SSL), ce dernier coché, et les boutons Annuler et Continuer ; le menu latéral montre Extensions ouvert sur Ajouter une extension.
Le formulaire Informations de connexion, que WordPress affiche quand il ne peut pas écrire lui-même dans ses fichiers

Si la connexion réussit mais que la mise à jour échoue ensuite avec le message « Impossible de localiser le répertoire racine de WordPress. », ajoutez la constante FTP_BASE avec le chemin du dossier de WordPress tel que le voit votre compte FTP, par exemple define('FTP_BASE', '/www/');. Les constantes FTP_CONTENT_DIR et FTP_PLUGIN_DIR font de même pour les dossiers wp-content et plugins.

A présent, plus aucune excuse pour stocker vos identifiants sur des post-it ou autre note numérique.

Les précautions à prendre

Ce confort a un revers : votre mot de passe FTP est désormais écrit en clair dans le fichier wp-config.php. Toute personne ou tout programme capable de lire ce fichier, par exemple une extension vulnérable ou une copie de sauvegarde oubliée dans un dossier public, obtient du même coup un accès à tous vos fichiers.

Réservez donc sa lecture à votre compte et au serveur web, avec des droits 400 ou 440 selon votre configuration, comme le recommande la documentation officielle sur la sécurisation de WordPress, et gardez FTP_SSL activé. Si votre hébergeur le permet, je vous conseille aussi de créer pour WordPress un compte FTP limité au dossier du site, plutôt que d’utiliser celui de votre hébergement. Pour le reste, voyez mes astuces pour sécuriser un site WordPress contre les attaques.

Encore mieux : se passer du FTP

WordPress ne vous demande ces identifiants que lorsqu’il ne peut pas modifier ses fichiers lui-même. Avant chaque installation ou mise à jour, il crée un fichier de test dans le dossier wp-content : si ce fichier appartient au même compte que les fichiers de WordPress, il choisit la méthode direct, écrit sans passer par le FTP et ignore les constantes ci-dessus. Sinon, il se rabat sur le FTP.

C’est la situation idéale, que la documentation officielle sur les droits des fichiers décrit pour les hébergements mutualisés où PHP s’exécute avec le compte propriétaire des fichiers du site : aucun mot de passe à saisir ni à stocker. Si WordPress vous réclame vos identifiants FTP, demandez d’abord à votre hébergeur s’il peut exécuter PHP sous votre compte.

La constante FS_METHOD permet aussi de forcer cette méthode :

define('FS_METHOD', 'direct');

Ne l’ajoutez qu’en connaissance de cause, car elle ne donne aucun droit supplémentaire à PHP. Si le serveur web ne peut pas écrire dans vos dossiers, les mises à jour échouent ; et s’il le peut sans en être propriétaire, les fichiers qu’il crée lui appartiennent, ce que la même documentation déconseille sur un hébergement mutualisé. Ne rendez jamais vos dossiers modifiables par tous (droits 777) pour contourner le problème.

Enfin, si votre hébergeur propose un accès SSH (SFTP), WordPress peut l’utiliser grâce à la méthode ssh2, à condition que l’extension PHP ssh2 soit installée sur le serveur ; sans elle, le type de connexion SSH2 n’apparaît pas dans le formulaire. Vous pouvez alors vous authentifier par clés plutôt que par mot de passe :

define('FS_METHOD', 'ssh2');
define('FTP_HOST', 'ssh.example.com');
define('FTP_USER', 'utilisateur');
define('FTP_PUBKEY', '/home/utilisateur/.ssh/id_rsa.pub');
define('FTP_PRIKEY', '/home/utilisateur/.ssh/id_rsa');

FTP_PUBKEY et FTP_PRIKEY indiquent le chemin des clés publique et privée sur le serveur, à placer hors du dossier public du site. Le port 22 est utilisé par défaut, et FTP_PASS devient facultatif : il ne sert qu’à la phrase secrète de la clé privée, si elle en a une.

Autre réglage utile du même fichier : augmenter la limite mémoire PHP dans le wp-config.php.

Avatar de Aurélien Denis

Protégez votre site WordPress

Vos données sont précieuses,
ne prenez pas le risque de tout perdre.
Confiez-moi votre maintenance !

Ces articles devraient t’intéresser…

25 réponses

  1. Avatar de franck
    franck

    bonjour,
    apres avoir fait la modification dans le fichier wp-config.php mon site plante page planche ?
    merci de votre retour ….

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Bonsoir, le fichier doit comporter une erreur. Le plus rapide consiste à remettre l’ancien fichier préalablement sauvegardé. Si vous ne l’avez pas, il faudra éditer le nouveau fichier et vérifier avec un éditeur de code ce qui pose problème.

  2. Avatar de Ded
    Ded

    Bonjour,
    Je n’arrive pas à me « connecter » à mon site wordpress via Filezilla …
    Connexion établie, attente du message d’accueil…
    Erreur : Délai d’attente expiré
    Erreur : Impossible d’établir une connexion au serveur

    Vous pouvez m’aider ? Merci beaucoup

  3. Avatar de MAveRiCk
    MAveRiCk

    MERCI MERCI MERCI pour cette astuce juste IMPECABLE !!!
    ça commençait à me gonffler menu de toujours inscrire mon mot de passe à chaque installation, mise à jour, suppression diverse !!!
    Et comme je suis un nouvel utilisateur de WP, je découvre à mesure, d’où mon arrivée sur tes pages !!!

    MERCI !!!!

  4. Avatar de Ludovic Bart
    Ludovic Bart

    Pour ma part J’ai testé cela aussi sur 2 sites et cela marche bien.
    Merci encore Aurélien de cette trouvaille.

    Encore un petit mot , ton site est une merveille d’informations.

    Bravo encore

    Bien cordialement

    Ludovic

  5. Avatar de Dig
    Dig

    Salut, moi j’utilise le module Lastpass pour retenir les mots de passe, valable aussi et surtout pour les sites sur lesquels on est inscrit, mais avec son wordpress local ou disant ça fonctionne très bien. Sur un autre cms ça n’avait pas fonctionné, je ne sais plus lesquel c’était mais si la page de login est normale c’est bon.

  6. Avatar de Rose Ludovic
    Rose Ludovic

    quel est la diferance entre UTF-8 et utf8 ?

  7. Avatar de Rose Ludovic
    Rose Ludovic

    a ben non cv toujour pas j’ai desinstaler et reinstaler surpercache et c’est sa qui fais buger

  8. Avatar de Rose Ludovic
    Rose Ludovic

    c’est bon j’ai trouver merci quand meme pour vos comprehension

  9. Avatar de Rose Ludovic
    Rose Ludovic

    je vois sa comment ?

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Quel est l’éditeur employé ? Il faut regarder dans les options de configuration ou dans les menus déroulants, c’est généralement indiqué.

  10. Avatar de Rose Ludovic
    Rose Ludovic

    j’avais aucun bug depuis que j’ai vu votre tuto je me suis dis pour quoi pas et la du coup j’ai sa et meme si je remais l’ancien config.php sa reste

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Dans ce cas, c’est un bug d’encodage lié à une mauvaise utilisation de l’éditeur de texte. Il faut faire attention à rester en UTF-8. Je ne vois que cela comme erreur.

  11. Avatar de Rose Ludovic
    Rose Ludovic

    ? j’ai suivi a la lettre votre tuto donc je vois pas trop pour quoi j’irais mettre sa ailleurs ^^

  12. Avatar de Rose Ludovic
    Rose Ludovic

    @Aurélien Denis

    meme si je desactive tout les plugins sa reste comme sa

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Non vous avez du vous tromper. Les lignes de l’article ne peuvent pas poser souci si elles correctement insérées. Leur suppression annule tout.

      Donc le bug est ailleurs.

  13. Avatar de Rose Ludovic
    Rose Ludovic

    oui bien sur @Aurélien Denis

  14. Avatar de Rose Ludovic
    Rose Ludovic

    bonjour, voila j’ai fais comment sur le tuto mais j’ai des bug partout maintenant et meme si je retire les ligne les bug reste voila le lien de mon site voir si vous pouvez m’aider merci.http://boost-serveur.servfr.net/

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Le fichier wp-config.php a bien été modifié ?

  15. Avatar de Brunerie Sylvain
    Brunerie Sylvain

    Bonjour,

    Merci pour cette exemple de mémorisation d’identifiant avec mot de passe.
    Je voudrais savoir comment faire , dans WordPress, un lien de téléchargement d’un fichier sur un serveur ftp, qui utiliserait l’identifiant et mot de passe d’un utilisateur WordPress.

    Cela à pour but de permettre que seulement les utilisateurs enregistrés sur notre site puisse télécharger des documents via un serveur FTP qui n’est pas sur le site de l’hébergeur.

    Si un utilisateur change sont mot de passe WordPress, il ne pourras plus accéder au serveur FTP. Dans ce cas de figure, comment gérer cela? Car si l’on doit changer manuellement le mot de passe du serveur FTP, par une tierce personne, l’utilisateur pensera que sont mot de passe sera connus, et donc non sécurisé.

    Merci par avance.

  16. Avatar de Mikel Aralar
    Mikel Aralar

    Très, très utile, en effet, pour les serveurs mutualisés. Et ça passe comme une lettre à la poste.

    Merci beaucoup.

  17. Avatar de Laurent
    Laurent

    Merci pour ce patch. Peut-on compléter ces lignes de code pour configurer un accès pour deux (ou plusieurs ?) comptes ftp différents ?
    Merci.

  18. Avatar de Sylvain Derreumaux
    Sylvain Derreumaux

    Et bien merci pour cette astuce !
    Testé ce matin sur un de mes sites, et c’est effectivement très efficace !

  19. Avatar de Julio Potier (BoiteAWeb.fr)
    Julio Potier (BoiteAWeb.fr)

    Hello

    Je reste sur ma faim, car si les identifiants sont demandés pour des raisons de sécurité, il y a de forte chance que cela ne suffisent pas. Et là tu n’en dit pas plus, dommage !

    Aussi tu parles vite fait du define( ‘FTP_SLL’, true ); que si ça marche pas on enlève. Euh, on parle SSL ça serait bien de savoir pourquoi on la mets ou pas, pourquoi on peut ne pas la mettre, creuser un peu plus.

    Aussi la question « Qu’estce que fait qu’on me demande ça ? » n’a pas de réponse, si il s’agit de mon propre serveur dédié mal configuré, que dois-je changer pour qu’il ne les demandes plus sans entrer ces IDs puisque mon port 21 est fermé !?

    Il existe FS_METHOD en define dans wp-config.php qui peut valoir « DIRECT » afin de passer par un upload PHP et un filtre WP existe aussi « filesystem_method ».

    Saurais-tu nous ajouter toutes ces réponses à mes quesions ?

    See you !

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Oui ce n’est pas très creusé, et je dois dire que j’attendais que tu me complètes. :p:

      Je ne peux pas te répondre pour les dédiés vu que je sous-traite cette partie et que mes connaissances sont plutôt limitées en administration serveur. Et quand je ne connais pas bien un sujet, je n’en parle jamais… 🙂

      Dans le cas présent, ce type de tutoriel est valable pour un paquet de mutualisé bien connus qui demande souvent ces identifiants.

      Donc oui perfectible ! 😉