Réception d’un fichier en SFTP¶
Nous allons maintenant mettre en place des transferts SFTP avec la Gateway. Pour ce faire, nous allons utiliser le serveur SSH local (OpenSSH) et le client sftp pour envoyer des fichiers vers la Gateway et en recevoir.
Pour pouvoir recevoir des fichiers, nous allons devoir ajouter un serveur SFTP à la Gateway, puis créer un utilisateur, et une règle de transfert.
Création d’un serveur SFTP¶
Pour pouvoir recevoir des fichiers en SFTP avec la Gateway, nous allons commencer par ajouter un serveur SFTP :
# waarp-gateway server add --name "sftp_server" --protocol "sftp" --address "127.0.0.1:2223"
The server sftp_server was successfully added.
Pour créer un serveur, nous devons préciser son nom, le protocole de ce serveur, ainsi que des informations additionnelles pour paramétrer le serveur (ici l’adresse écoutée et le port).
Voir aussi
Plus d’options de configuration sont disponibles pour les serveurs sftp, notamment des options de sécurité.
Le détail des options est disponible ici
Nous devons maintenant ajouter une paire de clefs publique et privée pour le
nouveau serveur.
Nous pouvons utiliser ssh-keygen
pour générer les clefs, puis nous les
ajoutons au serveur SFTP :
# ssh-keygen -t ssh-ed25519 -b 4096 -f gateway-sftp -N "" -C "Waarp Gateway SFTP server"
Generating public/private rsa key pair.
Your identification has been saved in gateway-sftp.
Your public key has been saved in gateway-sftp.pub.
The key fingerprint is:
SHA256:9G/DHpBTvR7V093tNKPekc8MbmkqIQA16WHLkO8RdmU Waarp Gateway SFTP server
The key's randomart image is:
+---[RSA 4096]----+
| oo. .E |
| + *... . *|
| O =. . .+O|
| B. . o .==|
| . oS = .+o.|
| . . .=.o.*o|
| . .*.*.+|
| .o * |
| .o |
+----[SHA256]-----+
# waarp-gateway server cert "sftp_server" add --name "sftp_hostkey" --private_key "./gateway-sftp"
The certificate sftp_server was successfully added.
Le serveur SFTP est maintenant créé mais n’est pas actif. Comme la Gateway doit écouter un nouveau port, il est nécessaire de la redémarrer :
# systemctl restart waarp-gatewayd
# systemctl status waarp-gatewayd
* waarp-gatewayd.service - Waarp Gateway server
Loaded: loaded (/usr/lib/systemd/system/waarp-gatewayd.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2020-08-27 08:52:23 UTC; 5s ago
Main PID: 20584 (waarp-gatewayd)
Tasks: 6 (limit: 2850)
Memory: 3.3M
CGroup: /system.slice/waarp-gatewayd.service
└─20584 /usr/bin/waarp-gatewayd server -c /etc/waarp-gateway/waarp-gatewayd.ini
Si tout s’est bien passé, la commande status
devrait lister le nouveau serveur :
# waarp-gateway -a "http://admin:admin_password@127.0.0.1:8080" status
Server info: waarp-gatewayd/0.4.0
Local date: Mon, 02 Jan 2006 16:04:05 CET
Core services:
[Active] Admin
[Active] Controller
[Active] Database
Servers:
[Active] sftp_server
Clients: <none>
Création d’un utilisateur¶
Pour pouvoir se connecter au serveur, nous devons maintenant créer un
utilisateur. Cela se fait en créant un « compte local » dans la Gateway.
Cet utilisateur aura myuser
comme login et mypassword
comme mot de
passe :
# waarp-gateway account local "sftp_server" add --login "myuser" --password "mypassword"
The account myuser was successfully added.
Nous pouvons essayer de nous connecter pour tester le paramétrage (entrez le mot de passe quand celui-ci est demandé) :
# sftp -P 2223 myuser@localhost
The authenticity of host '[localhost]:2223 ([127.0.0.1]:2223)' can't be established.
The authenticity of host '[localhost]:2223 ([127.0.0.1]:2223)' can't be established.
RSA key fingerprint is SHA256:9G/DHpBTvR7V093tNKPekc8MbmkqIQA16WHLkO8RdmU.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[localhost]:2223' (RSA) to the list of known hosts.
myuser@localhost's password:
Connected to myuser@localhost.
sftp> quit
Note
La demande de validation de la clef du serveur n’est demandée qu’une seule fois.
Pour calculer l’empreinte de la clef que nous avons généré ci-dessus, la
commande ssh-keygen -l -E sha256 -f gateway-sftp.pub
peut être utilisée. L’empreinte
générée par la commande doit correspondre à celle transmise par le serveur.
L’utilisateur est créé. Pour pouvoir faire un transfert, nous devons maintenant créer une règle de transfert
Ajout d’un règle¶
Les règles de transfert permettent de définir toutes les modalités liées à un transfert : le sens du transfert, les dossiers utilisés comme source et destination du fichier, les chaînes de traitement a exécuter avant ou après le transfert et en cas d’erreur.
Pour Waarp Gateway, tous les transferts doivent être associés à une règle.
Cependant les clients ne peuvent pas fournir l’identifiant de la règle à
utiliser (le protocole SFTP ne le supporte pas). Waarp Gateway utilise donc le
chemin utilisé par le client. Quand celui-ci lit ou écrit un fichier, le dossier
dans lequel ce fichier est situé est comparé aux chemins des règles (propriété
path
) pour déterminer la règle à utiliser. Si aucune règle n’est trouvée, le
transfert est refusé.
Ici, nous voulons envoyer un fichier à la Gateway. La règle aura donc le sens
receive
(« réception ») : le sens des règles est toujours à prendre du point
de vu de la Gateway (si on envoi un fichier à la Gateway, celle-ci le reçoit).
Assemblons tout dans une commande pour créer la règle :
# waarp-gateway rule add --name "sftp_recv" --direction "receive" --path "sftp_recv"
The rule sftp_recv was successfully added.
Premier transfert¶
Maintenant que nous avons un serveur, un utilisateur et une règle, nous pouvons effectuer un transfert. Créons d’abord un fichier à transférer et envoyons le à la gateway :
# echo "content of the file" > test.txt
$ sftp -P 2223 myuser@localhost
myuser@localhost's password:
Connected to myuser@localhost.
sftp> put test.txt sftp_recv/test01.txt
Uploading test.txt to /sftp_recv/test01.txt
test.txt 100% 20 5.7KB/s 00:00
sftp> quit
Après avoir établi une connexion avec la Gateway, nous avons déposé un fichier
avec la commande put
dans le dossier sftp_recv
que nous avons défini
ci-dessus comme le path
de la règle sftp_recv
.
Nous pouvons vérifier que le transfert s’est bien passé dans l’historique des transferts de la Gateway :
$ waarp-gateway history list
Transfers:
* Transfer 1 (as server) [DONE]
Way: receive
Protocol: sftp
Rule: sftp_recv
Requester: myuser
Requested: sftp_server
Local filepath: /etc/waarp-gateway/in/test01.txt
Remote filepath: /test01.txt
Start date: 2020-08-27T10:10:05Z
End date: 2020-08-27T10:10:05Z
Le fichier disponible est maintenant dans le dossier in
de la Gateway.
Comme nous n’avons pas spécifié de dossier spécifique dans la règle, c’est le
dossier par défaut du service qui est utilisé :
# ls -l /var/lib/waarp-gateway/in/
total 4
-rw-------. 1 waarp waarp, 20 Aug 27 10:10 test01.txt
Voir aussi
Plus d’informations sur la gestion des dossiers.