Miroir d'un site local vers httpdocs avec lftp et SFTP

Ce message fait suite à un autre datant de 2021 (Lftp et pb de certificat ssl non trusted).

Comme Antoine, je cherchais un équivalent de rsync sans SSH, qui me permette de synchroniser en une ligne de commande le répertoire distant httpdocs avec le répertoire local d’un site.

Je poste ici la solution que j’ai trouvée, en me disant qu’elle pourrait en aider d’autres, et aussi pour m’assurer, si une bonne âme me lit, qu’il n’y a pas de problèmes avec elle. (Je vais parler de ftp, de lftp,de ssh et de Wireshark, programmes et protocoles que je ne maîtrise à vrai dire pas trop.)

J’ai d’abord essayé une variante de la commande qu’Antoine proposait :

La synchronisation se faisait, mais j’ai eu l’idée d’ouvrir Wireshark pour voir si la communication était bien chiffrée : ce n’était pas le cas, le mot de passe et les fichiers passaient quand même en clair.

Après bien des tâtonnements, j’ai réussi à chiffrer le mot de passe, mais les fichiers continuaient à être envoyés en clair (je ne sais pas si c’est normal, mais lftp envoyait toujours une commande PROT C au serveur, qui avait justement cet effet).

Finalement, coup de théâtre, je me suis rendu compte qu’Ouvaton proposait le SFTP depuis quelques mois (youpi !).

J’ai essayé en SFTP avec lftp, mais un message d’erreur s’est affiché (Host key verification failed) :

$ lftp -p 115 -u 'mon-identifiant' sftp://ftp.ouvaton.coop
Mot de passe :
---- Exécution du programme de connexion (ssh -a -x -s -l mon-identifiant -p 115 ftp.ouvaton.coop sftp)
---> sending a packet, length=5, type=1(INIT), id=0
<--- The authenticity of host '[ftp.ouvaton.coop]:115 ([194.36.166.20]:115)' can't be established.
<--- ECDSA key fingerprint is SHA256:aY6zgo45Dh2sb09ugo/Jr6eIJq94Q2Uwo/IHtVepQsU.
<--- Are you sure you want to continue connecting (yes/no)? no
<---
<--- Host key verification failed.

Pour contourner cette erreur, il faut lancer une connexion au serveur avec la commande ssh, ce qui permet d’ajouter l’hôte ftp.ouvaton.coop:115 au fichier known_hosts :

$ ssh -p 115 mon-identifiant@ftp.ouvaton.coop
The authenticity of host '[ftp.ouvaton.coop]:115 ([194.36.166.20]:115)' can't be established.
ECDSA key fingerprint is SHA256:aY6zgo45Dh2sb09ugo/Jr6eIJq94Q2Uwo/IHtVepQsU.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[ftp.ouvaton.coop]:115,[194.36.166.20]:115' (ECDSA) to the list of known hosts.
mon-identifiant@ftp.ouvaton.coop's password: 
PTY allocation request failed on channel 0
shell request failed on channel 0

Même si la commande échoue, l’hôte est ajouté au fichier, et c’est tout ce qui compte.

Une fois l’hôte ajouté, je peux lancer la commande suivante, qui synchronise le répertoire distant httpdocs avec celui de mon site en local :

$ lftp -p 115 -u 'mon-identifiant' -e 'mirror --verbose=3 -R --delete /chemin/vers/repertoire/local /httpdocs/; bye' sftp://ftp.ouvaton.coop

Et j’ai l’impression que ça fonctionne.

1 Like