Git senza SSH

Ci siamo passati tutti: abbiamo bisogno di scaricare velocemente qualcosa da un pacchetto di hosting condiviso economico (ad esempio da IONOS). git pull Potresti voler eseguire un programma o utilizzare un database, ma il tuo provider di hosting non concede l'accesso SSH, o lo concede solo nei piani più costosi. Spesso, l'unica opzione rimasta è il noioso processo di caricamento manuale dei file tramite FTP, che rende le distribuzioni inutilmente complicate e soggette a errori.


Una possibile soluzione alternativa è montare il file system tramite sshfs. In teoria, questo sembra un buon metodo: si monta la cartella remota localmente e si lavora come se i file fossero sulla propria macchina. Per farlo, è sufficiente creare una directory locale e connetterla al server tramite l'utente FTP/SSH. I comandi necessari per stabilire la connessione e preparare Git per questa cartella sono i seguenti su Linux::

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

Il problema: le prestazioni sono pessime. Poiché Git ha difficoltà con comandi come git status Quando si eseguono migliaia di piccole operazioni su file, ciascuna delle quali richiede l'accesso alla rete, spesso si attendono minuti anche per le risposte più semplici. Lavorare in modo produttivo è praticamente impossibile in queste circostanze. Soprattutto nei progetti con numerose dipendenze, il terminale si blocca spesso completamente, costringendo gli utenti frustrati ad abbandonare il processo.

Librerie come ftpsh esistono proprio per questo scenario. Questa libreria consente di eseguire comandi shell su un server remoto che offre solo accesso (S)FTP e HTTP. Il trucco sta nel caricare temporaneamente uno script PHP, che esegue i comandi specificati e restituisce l'output. Tutto questo avviene in background, ma sembra una vera shell.

L'installazione è semplice e veloce.:

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

Successivamente, creiamo un file .env con i dati di accesso (S)FTP.:

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

Ora possiamo eseguire qualsiasi comando sul server, a patto che gli strumenti siano disponibili in remoto.:

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

Lo script carica un worker in background, esegue il comando localmente sul server (dove è più veloce) e restituisce il risultato. Ciò consente un'automazione efficiente di distribuzioni, dump di database o operazioni Git, anche in ambienti di hosting limitati. Si integra inoltre perfettamente con syncdb per la sincronizzazione dei database.

Indietro