Mise en place des flux SFTP

Table des matières
  1. Mise en place des flux SFTP
    1. Présentation du flux SFTP
    2. Prérequis techniques
      1. Vérification de la connectivité réseau
      2. Test de connexion SFTP (optionnel — pour validation)
      3. Liste de contrôle
    3. Génération de la clé SSH
      1. Contraintes de compatibilité
      2. Génération de la clé (recommandée)
        1. Option A — Via OpenSSH en ligne de commande (Linux ou Windows avec OpenSSH)
        2. Option B — Via PuTTYgen (Windows, si préférence pour l’interface graphique)
      3. Déploiement de la clé sur le serveur Tomcat
      4. Dépôt de la clé publique sur le serveur SFTP distant
    4. Configuration du flux sortant
      1. Format de l’URL de connexion
      2. Paramétrage dans l’application
      3. Fonctionnement
    5. Configuration du flux entrant
      1. Format de l’URL de connexion
      2. Option de suppression du fichier distant
      3. Fonctionnement du flux entrant
      4. Paramétrage dans l’application
    6. Résolution des problèmes courants

Documentation Technique — Flux entrant et sortant — Authentification par mot de passe ou clé SSH


Présentation du flux SFTP

Le protocole SFTP (SSH File Transfer Protocol) permet l’échange sécurisé de fichiers entre votre système d’information et l’application, via un canal chiffré SSH. Contrairement au FTP classique, toutes les données transitent de façon chiffrée, garantissant la confidentialité et l’intégrité des échanges.

Deux sens de flux sont pris en charge :

  • Flux sortant : l’application dépose un fichier sur un serveur SFTP distant.
  • Flux entrant : l’application récupère un fichier depuis un serveur SFTP distant et l’intègre automatiquement.

L’application s’appuie sur la stack Java + Apache VFS + JSch pour établir ces connexions, ce qui implique des contraintes spécifiques sur le format des clés SSH utilisées (détaillées en section 3).


Prérequis techniques

Vérification de la connectivité réseau

Avant toute configuration, vérifiez que le serveur hébergeant l’application (Tomcat) peut atteindre le serveur SFTP sur le port configuré (par défaut : port 22).

Sous Windows (PowerShell)

# Tester l'ouverture du port SFTP
Test-NetConnection -ComputerName <ip_ou_dns_serveur> -Port <port>

# Vérifier la résolution DNS
Resolve-DnsName <dns_serveur>

Sous Linux (Bash)

# Tester l'ouverture du port SFTP
nc -zv <ip_ou_dns_serveur> <port>

# Ou avec nmap
nmap -p 22 <ip_ou_dns_serveur>

# Vérifier la résolution DNS
nslookup <dns_serveur>
# ou
dig <dns_serveur>

Résultat attendu : le port doit apparaître comme ouvert (open / TcpTestSucceeded : True). Si ce n’est pas le cas, une règle de pare-feu doit être ouverte entre le serveur applicatif et le serveur SFTP sur le port concerné.

Test de connexion SFTP (optionnel — pour validation)

Si le client souhaite valider la connexion manuellement avant de configurer l’application, les méthodes suivantes permettent de tester l’accès au serveur SFTP.

Sous Linux — client SFTP natif

sftp -P <port> <identifiant>@<ip_ou_dns>

# Une fois connecté, tester l'accès au dossier :
ls /dossier

Sous Windows — WinSCP (interface graphique ou ligne de commande)

WinSCP est un client SFTP gratuit pour Windows, disponible sur https://winscp.net. Il permet de tester la connexion aussi bien par mot de passe que par clé privée.

Test en ligne de commande (WinSCP) :

# Connexion par mot de passe
& "C:\Program Files (x86)\WinSCP\WinSCP.com" /command `
  "open sftp://<identifiant>:<mot_de_passe>@<ip_ou_dns>:<port>" `
  "ls /dossier" `
  "exit"

# Connexion par clé privée (.ppk)
& "C:\Program Files (x86)\WinSCP\WinSCP.com" /command `
  "open sftp://<identifiant>@<ip_ou_dns>:<port> /privatekey=C:\chemin\cle.ppk" `
  "ls /dossier" `
  "exit"

Note : WinSCP utilise le format de clé .ppk (PuTTY). Si la clé a été générée en ligne de commande (format .pem), elle doit être importée dans PuTTYgen pour être convertie en .ppk avant utilisation avec WinSCP. Cette procédure est décrite à la section 3.

Liste de contrôle

Élément à vérifier Statut
Port SFTP accessible depuis le serveur Tomcat
Compte utilisateur SFTP créé sur le serveur distant
Droits en lecture/écriture sur le dossier cible
Clé publique déposée sur le serveur distant (si auth par clé)
Pare-feu / ACL réseau ouverts

Génération de la clé SSH

Cette section s’applique uniquement si le mode d’authentification choisi est par clé privée/publique. Si l’authentification se fait par mot de passe, vous pouvez passer directement à la section 4.

Contraintes de compatibilité

L’application utilise JSch, une bibliothèque Java qui impose des contraintes sur le format de la clé privée :

  • Format requis : PEM (en-tête -----BEGIN RSA PRIVATE KEY----- ou -----BEGIN OPENSSH PRIVATE KEY-----)
  • Algorithme recommandé : RSA (4096 bits) ou ED25519
  • Passphrase : aucune passphrase ne doit être définie — la connexion est automatisée depuis Tomcat
  • Compatibilité WinSCP : la clé doit pouvoir être utilisée par WinSCP pour les tests manuels (format .ppk)

⚠️ Attention : les clés générées par défaut avec OpenSSH récent (ssh-keygen sans option) produisent un format OpenSSH natif qui peut être incompatible avec les versions anciennes de JSch. Suivez la procédure ci-dessous pour garantir la compatibilité.

Génération de la clé (recommandée)

Option A — Via OpenSSH en ligne de commande (Linux ou Windows avec OpenSSH)

Recommandé. Méthode directe et reproductible, compatible avec les environnements Linux et Windows (OpenSSH inclus dans Windows 10/11).

# Génération de la clé RSA au format PEM compatible JSch
# IMPORTANT : ne pas saisir de passphrase lorsqu'elle est demandée (laisser vide)
ssh-keygen -t rsa -b 4096 -m PEM -f /chemin/vers/cle_sftp -C "sftp-application" -N ""

# Cela génère :
#   cle_sftp       → clé privée (format PEM, à placer sur le serveur Tomcat)
#   cle_sftp.pub   → clé publique (à déposer sur le serveur SFTP distant)

# Si besoin, convertir une clé OpenSSH native existante en PEM :
ssh-keygen -p -N "" -m PEM -f /chemin/vers/cle_sftp

L’option -N "" définit explicitement une passphrase vide. La passphrase est incompatible avec une connexion automatisée depuis Tomcat.

Utilisation avec WinSCP (test optionnel) : la clé .pem doit être convertie en .ppk via PuTTYgen (Conversions > Import key, puis Save private key).

Option B — Via PuTTYgen (Windows, si préférence pour l’interface graphique)

PuTTYgen est un utilitaire graphique inclus avec PuTTY, disponible sur https://www.putty.org.

  1. Ouvrir PuTTYgen
  2. Sélectionner le type RSA, taille 4096 bits
  3. Cliquer sur Generate et déplacer la souris pour générer de l’aléatoire
  4. Ne pas saisir de passphrase — laisser les champs vides pour permettre la connexion automatisée
  5. Cliquer sur Save private key → enregistrer au format .ppk (pour WinSCP)
  6. Cliquer sur Conversions > Export OpenSSH key → enregistrer au format .pem (pour l’application Java)
  7. Copier la clé publique affichée dans la fenêtre PuTTYgen → à déposer dans ~/.ssh/authorized_keys sur le serveur SFTP

Déploiement de la clé sur le serveur Tomcat

La clé privée (fichier .pem) doit être placée dans un répertoire accessible en lecture par le compte de service Tomcat, et protégée en accès :

# Exemple Linux
chmod 600 /opt/tomcat/conf/sftp/cle_sftp.pem
chown tomcat:tomcat /opt/tomcat/conf/sftp/cle_sftp.pem

Dépôt de la clé publique sur le serveur SFTP distant

La clé publique générée doit être ajoutée au fichier ~/.ssh/authorized_keys du compte utilisateur SFTP sur le serveur distant :

cat cle_sftp.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Configuration du flux sortant

Le flux sortant permet à l’application de déposer un fichier sur un serveur SFTP distant.

Format de l’URL de connexion

Authentification par identifiant / mot de passe :

sftp://[identifiant]:[mot de passe]@[ip ou dns du serveur]:[port]/dossier/nom-fichier.csv

Il est recommandé de transformer les identifiants/mots de passe en URL encodée.

Si le caractère @ apparaît dans l’identifiant ou le mot de passe, il est recommandé de le remplacer par %arobase%.

Authentification par clé privée/publique :

sftp://[identifiant]@[ip ou dns du serveur]:[port]/dossier/nom-fichier.csv

Le mot de passe est omis lorsque l’authentification se fait par clé. Le chemin vers la clé privée est renseigné séparément dans les paramètres de l’application.

Paramétrage dans l’application

Paramètre Description
URL SFTP L’URL complète au format décrit ci-dessus
Chemin de la clé privée Chemin absolu vers le fichier .pem sur le serveur Tomcat (si authentification par clé, sinon mot de passe dans l’URL)

Fonctionnement

À l’exécution, l’application génère le fichier et le transfère vers le chemin distant spécifié dans l’URL. Le nom du fichier dans l’URL (nom-fichier.csv) correspond au nom effectif déposé sur le serveur SFTP distant.


Configuration du flux entrant

Le flux entrant permet à l’application de récupérer un fichier depuis un serveur SFTP distant et de l’intégrer automatiquement.

Format de l’URL de connexion

Authentification par identifiant / mot de passe :

sftp://[identifiant]:[mot de passe]@[ip ou dns du serveur]:[port]/dossier/nom-fichier.csv

Il est recommandé de transformer les identifiants/mots de passe en URL encodée.

Si le caractère @ apparaît dans l’identifiant ou le mot de passe, il est recommandé de le remplacer par %arobase%.

Authentification par clé privée/publique :

sftp://[identifiant]@[ip ou dns du serveur]:[port]/dossier/nom-fichier.csv

Option de suppression du fichier distant

Le flux entrant propose une option permettant de supprimer le fichier sur le serveur SFTP distant après récupération.

⚠️ Attention : l’activation de cette option est irréversible. Le fichier est définitivement supprimé du serveur distant après téléchargement. Elle ne doit être activée qu’après validation du bon fonctionnement du flux et en accord avec le gestionnaire du serveur SFTP.

Fonctionnement du flux entrant

Le déroulement est le suivant :

  1. L’application se connecte au serveur SFTP distant selon les paramètres configurés.
  2. Elle récupère le fichier correspondant au chemin spécifié dans l’URL.
  3. Le fichier est copié dans le dossier d’écoute entrant défini dans les paramètres de l’application, au niveau du paramètre “Interface entrante - Dossier en écoute” de l’écran Outils > Interface > Entrante.
  4. Si l’option de suppression est activée, le fichier est supprimé du serveur distant.
  5. Un lecteur de fichiers entrants surveille le dossier d’écoute et identifie le fichier par son nom (nom-fichier.csv).
  6. L’interface entrante correspondante est déclenchée et le fichier est intégré.

Paramétrage dans l’application

Paramètre Description
URL SFTP L’URL complète au format décrit ci-dessus
Chemin de la clé privée Chemin absolu vers le fichier .pem sur le serveur Tomcat (si authentification par clé, sinon mot de passe dans l’URL)
Suppression après récupération Oui / Non — à activer avec précaution (voir section 5.2)
Dossier en écoute Défini dans Paramètres > Interface entrante - Dossier en écoute

Résolution des problèmes courants

Symptôme Cause probable Action corrective
Connection refused Port SFTP fermé ou inaccessible Vérifier les règles pare-feu et le port utilisé (section 2)
Auth fail Mauvais identifiant/mot de passe ou clé non reconnue Vérifier les credentials ou le contenu de authorized_keys
Invalid private key Format de clé incompatible avec JSch Régénérer la clé au format PEM RSA avec -N "" (section 3)
Passphrase incorrecte Une passphrase a été définie sur la clé Régénérer la clé sans passphrase : -N "" (section 3)
Fichier non détecté Nom de fichier incorrect ou paramétrage erroné Vérifier la correspondance exacte du nom de fichier
Fichier supprimé avant intégration Option de suppression activée avec flux défaillant Désactiver la suppression automatique jusqu’à stabilisation

This site uses Just the Docs, a documentation theme for Jekyll.