Quelle est la différence entre FTPS et SFTP ?
I. Présentation
Lorsque l'on effectue un transfert de fichiers, on opte généralement pour du FTP. La sécurité n'étant pas négligeable, on optera pour une version sécurisée du FTP à savoir le FTPS ou le SFTP. Mais alors, quelle est la différence entre ces deux protocoles ?
II. Le FTPS
Le FTPS est en fait du FTP avec une couche SSL en plus pour le côté sécurité que cela apporte. L'utilisation du SSL permet d'exiger l'utilisation d'un certificat pour sécuriser la communication entre le client et le serveur.
Généralement, on utilise des connexions FTP avec chiffrement explicite. De ce fait, la connexion s'effectue sur le port 21 (standard) puis la commande "AUTH TLS" ou "AUTH SSL" est envoyée au serveur afin de lui demander de chiffrer le transfert de commandes. Ensuite, une seconde commande nommée "PROT P" est envoyée afin de demander au serveur de chiffrer le transfert des données.
L'utilisation du FTPS implique que le serveur FTP distant soit configuré de façon à gérer les connexions sécurisées.
III. Le SFTP
Le SFTP quant à lui signifie : SSH File Transfer Protocol ou Secure File Transfer Protocol. En fait, ce protocole est désigné comme une extension du protocole SSH qui permet d'effectuer du transfert de fichiers. On pourrait parler de transfert FTP encapsulé dans un tunnel SSH sécurisé.
Il utilise uniquement le port SSH (22), aussi bien pour le transfert des données que pour le contrôle.
IV. Conclusion
Dans les deux cas, l'objectif est d'ajouter une couche de sécurité soit par le SSL/TLS ou par le SSH. De ce fait, d'une part on pourra utiliser des certificats de type X.509 avec le FTPS, d'autre part, on pourra utiliser des clés SSH pour gérer la sécurité des échanges.
De plus, dans le cas du SFTP on utilise une seule connexion puisque tout passe dans la connexion SSH, alors que, dans le cas du FTPS il est nécessaire d'ouvrir deux connexions.
Le fonctionnement du FTPS implique que la connexion ne soit pas sécurisée dès le départ. En effet, elle l'est uniquement lorsque le serveur a reçu la demande de chiffrement et qu'il commence à chiffrer. À l'inverse, avec le SFTP le chiffrement est opérationnel dès le départ grâce à la présence du SSH pour établir la connexion avec le serveur FTP distant.
Enfin, je finirais par préciser pour les développeurs que le .NET Framework n'intègre pas le support du SFTP.
Qu'utilisez-vous, le FTPS ou le SFTP ?
Bien souvent, j’utilise le FTP ! C’est un peu dommage à dire mais les seuls cas où j’utilise le FTP sont pour échanger avec mes espaces webs chez mes différents hébergeurs et ceux-ci proposent rarement le FTPS ou SFTP. Un simple accès SSH permet d’utiliser le SFTP ?
Hello,
à la rigueur tu peux aussi utiliser la commande scp (sous linux et osX) (ou winSCP : https://sourceforge.net/projects/winscp/) sous windows, qui permettent la transmission de fichiers à travers une connexion SSH. Personnellement je passe presque toujours par là.
Le sftp s’utilise avec juste un serveur ssh, si tu peux prendre la main via putty sur ton serveur alors tu peux faire du sftp (via filezilla notamment).
Pour en revenir au site, je trouve que cela devient carrément du pro-microsoft, il faudrait peut être conscient qu’il y a autre chose quand même dans le monde informatique.
Erreur, le sftp peut être utilisé sur un autre port que le port 22, je trouve le sftp bien plus propre que le ftps personnellement.
Bobie:
Il ne dit pas que ssh ou sftp ne peut utiliser que le port 22. Il fallait comprendre le « par défaut » sous-entendu.
Il dit que contrairement à la méthode FTPS qui est un FTP classique donc les flux sont sécurisés (c’est-à-dire un flux de commande et un flux de données, d’où les deux connexions) la méthode SFTP, puisqu’elle passe par SSH, n’utilise d’une seule connexion sur le port 22 (par défaut)…
Après, dans les deux cas tu peux configurer ton serveur pour utiliser un port non standard mais il faudra le préciser au client.
Sinon c’est très sympa ce site. 🙂
Merci Florian pour cette explication.
Il y a une information importante concernant le mode implicite du ftps et ses ports:
FTP en mode implicite utilise le port de commande 990 et le port de données 989 avec le schéma d’URI ftps:// .
FTP en mode explicite utilise le port de commande standard 21 avec le schéma d’URI ftpes:// ou ftp:// .
Bonjour,
SVP
A quelle moment je doit insère en utilisant PowerShell uploade pour un FTP en protocole explicite Tls:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls12
Merci
Arnold