Git sans SSH

Qui n'a jamais vécu ça : avoir besoin de télécharger rapidement quelque chose sur un forfait d'hébergement mutualisé bon marché (par exemple, chez IONOS) ? git pull Vous souhaitez peut-être exécuter un programme ou utiliser une base de données, mais votre hébergeur ne propose pas d'accès SSH, ou seulement dans ses formules les plus onéreuses. Souvent, la seule option restante est le fastidieux processus de transfert manuel des fichiers via FTP, ce qui complexifie inutilement les déploiements et augmente les risques d'erreurs.


Une solution possible consiste à monter le système de fichiers via sshfs. En théorie, l'idée est séduisante : vous montez le dossier distant localement et travaillez comme si les fichiers se trouvaient sur votre propre machine. Pour ce faire, il suffit de créer un répertoire local et de le connecter au serveur via l'utilisateur FTP/SSH. Sous Linux, les commandes nécessaires pour établir la connexion et configurer Git pour ce dossier sont les suivantes ::

sudo apt-get install sshfs
mkdir /var/www/remote
cd /var/www/remote
sshfs username@your.host:/ -p 22 /var/www/remote
git config --global --add safe.directory /var/www/remote
git status
...
umount /var/www/remote

Le problème : les performances sont catastrophiques. Git a en effet beaucoup de mal avec des commandes comme… git status Lors de l'exécution de milliers de petites opérations sur des fichiers, chacune nécessitant un accès réseau, l'attente peut durer plusieurs minutes, même pour les réponses les plus simples. Dans ces conditions, il est quasiment impossible de travailler efficacement. En particulier dans les projets comportant de nombreuses dépendances, le terminal se bloque fréquemment, contraignant les utilisateurs, exaspérés, à abandonner le processus.

Des bibliothèques comme ftpsh existent exactement pour ce scénario. La bibliothèque permet d'exécuter des commandes shell sur un serveur distant qui n'offre que des accès (S)FTP et HTTP. L'astuce : un script PHP est temporairement téléchargé, qui exécute les commandes données et renvoie le résultat. Tout cela se passe en arrière-plan, mais cela ressemble à une véritable coquille.

L'installation est rapide et facile.:

mkdir ftpsh
cd ftpsh
wget -O ftpsh.sh https://raw.githubusercontent.com/vielhuber/ftpsh/main/ftpsh.sh
chmod +x ftpsh.sh

Ensuite, nous posons un .env avec les données d'accès (S)FTP à:

HOST=your-server.com
PORT=22
USERNAME=your-username
PASSWORD=your-password
REMOTE_PATH="/"
WEB_URL="https://your-server.com"

Nous pouvons désormais exécuter n'importe quelle commande sur le serveur, à condition que les outils soient disponibles à distance.:

ftpsh git status
ftpsh "mysqldump -h xxx --port 3306 -u xxx -p\"xxx\" --routines xxx" > dump.sql

Le script télécharge un travailleur en arrière-plan, exécute la commande localement sur le serveur (où elle est rapide) et renvoie le résultat. Cela permet d'automatiser efficacement les déploiements, les sauvegardes de bases de données ou les opérations Git, même sur des environnements d'hébergement limités. Par exemple, il fonctionne également parfaitement avec syncdb pour synchroniser les bases de données.

Retour