lumnik. / scénarios Tous les scénarios · English

Le dépôt SFTP du transporteur lu chaque nuit sans rien croire sur parole

Objectif Lire chaque nuit le fichier du transporteur, le ranger, et refuser un serveur dont la clé a changé.

Un transporteur dépose chaque nuit livraisons.csv sur son SFTP, toujours sous le même nom.

manifests/10-carrier.yaml
apiVersion: connectors.lumnik.io/v1kind: Connectormetadata:  name: scenario-carrier-a  connector_type: csv-file  scopes: [transport]spec:  transport:    kind: sftp    host: host.docker.internal    port: 2223    user: carrier    path: /out/*.csv    password_env: SCENARIO_CARRIER_A_SFTP    # The fingerprint the carrier's server presents, read out of band (ssh-keyscan | ssh-keygen -lf -).    host_key_fingerprint: "SHA256:FINGERPRINT_READ_AT_REPLAY"  parser:    has_header: true  after_process: archive  archive_path: /archive/
livraisons-night1.csv
shipment,status,city
S-1001,TRA,Lyon
S-1002,TRA,Vienne
S-1003,LIV,Givors
S-1004,TRA,Lyon
S-1005,RET,Bron
S-1006,TRA,Lyon
livraisons-night2.csv
shipment,status,city
S-1001,LIV,Lyon
S-1002,LIV,Vienne
S-1003,LIV,Givors
S-1004,TRA,Lyon
S-1005,RET,Bron
S-1006,LIV,Lyon
livraisons-night3.csv
shipment,status,city
S-1004,LIV,Lyon
S-1007,TRA,Vénissieux
$ lm connector run scenario-carrier-d
run scheduled: bc7df8c4-f546-41a8-9ab5-4ce1eba4c618

$ lm run get bc7df8c4-f546-41a8-9ab5-4ce1eba4c618
ID        CONNECTOR           ENDPOINT  STATUS  IN  OUT  SKIPPED  DEAD-LETTERS  STARTED           ENDED             EVALUATED
bc7df8c4  scenario-carrier-d  default   Failed  0   0    0        0             2026-10-22 20:44  2026-10-22 20:44  no
✖ run failed: SFTP host key refused for host.docker.internal:2223 — the server presented SHA256:z0s2KEWB7fEsBsd/JTIbxr5YwdTbZLCJNtG9UWmafe8, and it does not match the declared SHA256:FZMB2WwJKm87XB3fpEhOPieZ3XZW5VAolwo6+MX+iHg. Confirm that fingerprint out of band (ssh-keyscan -p 2223 host.docker.internal | ssh-keygen -lf -), then set host_key_fingerprint: "SHA256:z0s2KEWB7fEsBsd/JTIbxr5YwdTbZLCJNtG9UWmafe8" in the transport block. Setting strict_host_key: false connects without checking at all — which accepts an impostor as readily as the real server. — Server key did not validate
livraisons-night4.csv
shipment,status,city
S-1007,LIV,Vénissieux

Limites

  • La vérification avant le déplacement n'est pas atomique: un fichier déposé dans les millisecondes entre les deux est encore déplacé.
  • Un transporteur qui écrit sous un autre nom puis renomme n'est jamais pris dans cet intervalle.
  • Serveur SFTP simulé ; données synthétiques.

Transport · SFTP

Le transporteur dépose un fichier chaque nuit.

Toujours sous le même nom.

Quatre nuits, serveur simulé

Le problème

Même nom, même taille.

  • Une nuit peut ressembler à la précédente.
  • Une archive peut écraser l'autre.

Ce qui n'est pas modifié

Le serveur du transporteur reste tel quel.

  • Son dossier de dépôt.
  • Son compte SFTP.

Le piège

Parler au mauvais serveur.

  • Le serveur est réinstallé.
  • Sa clé n'est plus la même.

Ce qu'il a fallu écrire

host_key_fingerprint: "SHA256:…"

Une ligne.

  • Le hub ne parle qu'au serveur connu.
  • Chaque nuit archivée sous son heure.
  • Un manifeste, 20 lignes.

Un refus

La clé a changé: refusé.

  • Les deux empreintes nommées.
  • Confirmer avec le transporteur, puis épingler.

La limite

Un dépôt pendant le déplacement.

  • Quelques millisecondes non atomiques.

Essayer

Le scénario se rejoue en local.

Chaque étape est publiée avec sa sortie.

Ce scénario tourne sur lumnik Open, gratuit et open source.

Essayer lumnik Open →