# SFTP

Bien que le protocole comporte de nombreuses fonctionnalités, seules celles pertinentes pour le MFT ont été implémentées dans Waarp Gateway.

## Commandes

Il est donc possible d’initier un transfert via les commandes `Put` ou `Get` (suivant le sens du transfert). Dans les 2 cas, étant donné que SFTP n’offre pas de mécanisme pour transmettre le nom de la règle à utiliser, c’est donc le chemin du fichier qui est utilisé pour déterminer la règle.

L’implémentation de SFTP dans Waarp Gateway supporte également les commandes `List` et `Stat` permettant de récupérer les fichiers disponibles sur le serveur. Cependant, l’implémentation dans Waarp Gateway diffère des implémentations classiques, car elle masque les dossiers réels se trouvant sous la racine du serveur. À la place, le serveur donne une liste de dossiers correspondants aux `path` de toutes les règles utilisables par l’utilisateur.

Lister le contenu d’un de ces dossiers affichera la liste des fichiers pouvant être récupéré avec la règle correspondante. Par conséquent, les dossiers des règles de réception seront donc toujours vides (à moins qu’il existe une règle d’envoi ayant le même `path`). Pour résumer, cela signifie que les fichiers déposés sur le serveur ne seront pas visibles une fois le transfert terminé.

Toutes les autres commandes SFTP, à savoir `Setstat`, `Rename`, `Rmdir`, `Mkdir`, `Link`, `Symlink`, `Remove` & `Readlink` ne sont pas implémentées, car non-pertinentes pour le MFT.

## Authentification

### Authentification client

Le client SFTP est capable de s’authentifier via mot de passe et/ou via clé SSH. La (ou les) forme d’authentification utilisées lorsque le client se connecte à un serveur SFTP dépend de la configuration du compte (RemoteAccount).

De sont côté, le serveur SFTP de Waarp Gateway supporte également ces deux formes d’authentification pour les clients s’y connectant. À noter que le serveur vérifiera toutes les formes d’authentification fournies par le client.

### Authentification serveur

Le protocole SSH requiert que le serveur fournisse une clé d’hôte (hostkey) lorsqu’un client s’y connecte. Par conséquent, le serveur SFTP de Waarp Gateway doit impérativement être configuré avec au moins une clé SSH pour être utilisable (il est possible de configurer un serveur avec plusieurs clés différentes). Le serveur enverra toutes ses hostkeys aux clients qui s’y connectent.

Réciproquement, lorsqu’il se connecte à un partenaire SFTP, le client SFTP de Waarp Gateway vérifiera qu’au moins une des clés SSH fournies par ce partenaire soit connue.

Les algorithmes suivants sont acceptés pour la hostkey du serveur :

- `ecdsa-sha2-nistp256`

- `ecdsa-sha2-nistp384`

- `ecdsa-sha2-nistp521`

- `rsa-sha2-512`

- `rsa-sha2-256`

- `ssh-rsa`

- `ssh-dss`

- `ssh-ed25519`

## Multiplexing

Waarp Gateway supporte le multiplexing pour les transferts SFTP.

Côté client, si plusieurs transferts vers le même partenaire (et avec le même compte) sont exécutés en même temps, ils seront tous exécuté au sein de la même session pour de meilleures performances.

De même, côté serveur, il est possible d’exécuter plusieurs transferts SFTP en parallèle au sein de la même session.