Pourquoi WordPress a-t-il besoin de ma clé ssh privée pour mettre à jour?

13

Configurer WordPress pour qu'il se mette à jour dans l'application (c'est-à-dire WordPress) est idéal pour moi en raison de sa commodité. Néanmoins, je suis troublé par les exigences. Les champs demandés qui apparaissent après l' installation de ssh2 pour php demandent non seulement ma clé publique, mais aussi ma clé privée. Je pense que, tout au plus, seule la clé publique serait requise.

WordPress donne-t-il réellement ma clé privée à un serveur afin que le serveur puisse télécharger le package logiciel correct sur mon serveur? Je connais le fonctionnement des clés privées / publiques SSH, c'est pourquoi je ne comprends pas pourquoi WordPress en a besoin. Si quoi que ce soit, je pense que le mécanisme de mise à jour n'aurait même pas besoin de ce protocole; il suffit d'utiliser http ou ftp sur le serveur de packages, puis de télécharger / installer / activer à partir de là.

Pourquoi WordPress a-t-il besoin de mes clés SSH? Y a-t-il des problèmes de sécurité ici?

Avery Chan
la source

Réponses:

11

Essentiellement, WordPress doit se reconnecter au serveur sur lequel il s'exécute réellement.

Il existe plusieurs façons d'utiliser WordPress pour écrire des fichiers et ainsi se "remplacer" lui-même lors d'une mise à niveau. Du point de vue de la sécurité, la partie importante de ce processus est que les nouveaux fichiers doivent avoir la même propriété que les anciens fichiers.

Ainsi, WordPress effectue d'abord un test en écrivant un fichier directement et en vérifiant qui est le propriétaire résultant. Si le propriétaire fait correspondre les fichiers PHP, il sait qu'il peut écrire des fichiers avec la propriété correcte (cela signifie que le processus est "paramétré" pour le propriétaire du fichier).

Si le fichier résultant appartient à un autre utilisateur (ce qui est probable si Apache / PHP s'exécute en tant qu'utilisateur différent, comme l'utilisateur "www" ou "apache"), alors WordPress doit utiliser une méthode différente pour créer des fichiers avec le bon propriétaire.

Une approche est simple FTP. S'il rétablit une connexion FTP sur le serveur sur lequel il se trouve, puis écrit des fichiers dessus, les fichiers résultants seront la propriété de celui qui se connectera en tant que FTP. Ainsi, il invite l'utilisateur à fournir des informations FTP.

Mais FTP n'est pas très sécurisé. Donc, comme vous l'avez trouvé, une autre méthode est via SSH2. En utilisant la bibliothèque SSH pour PHP, il peut établir une connexion SSH avec le serveur de la même manière. Et c'est pourquoi il a besoin d'une clé privée, car il l'utilise pour rétablir une connexion sortante. En établissant cette connexion, il peut définir des informations d'identification et écrire des fichiers en tant qu'utilisateur disposant de ces informations.

Si vous souhaitez que ces clés soient présentes, générez un nouvel ensemble de clés et utilisez-les exclusivement à cette fin.

Pour répondre à votre question directe, non, WordPress ne "donne" les clés nulle part. Il télécharge le package de mise à niveau, le décompresse, puis utilise ces clés pour établir une connexion avec son propre serveur (bouclage, essentiellement), puis copie les fichiers via cette connexion. Ce faisant, les informations d'identification signifient que les fichiers obtiennent la propriété correcte et évitent les problèmes de sécurité liés à la possession des fichiers WordPress par le processus Apache / www / php principal.

Otto
la source
Très bonne réponse. Cela a apaisé mes inquiétudes. Est-ce documenté quelque part?
Avery Chan
Oui, mais peut-être avec des quantités de détails différentes: codex.wordpress.org/Filesystem_API
Otto
lorsque vous dites que vous vous connectez "à lui-même". Voulez-vous dire que PHP est le client FTP et que vous vous connectez au même serveur sur lequel il fonctionne?
dangel
Oui, exactement ça.
Otto