2008-09-02 5 views
2

Nous devons supprimer le FTP traditionnel pour des raisons de sécurité (il transmet ses mots de passe non cryptés). J'entends SSH présenté comme l'alternative évidente. Cependant j'ai conduit le ftp d'une interface de programme d'ASP.NET pour automatiser mon développement de site Web, qui est maintenant un processus très fortement basé sur le Web.Remplacement FTP programmable et sécurisé

Quelqu'un peut-il recommander un moyen sécurisé de transférer des fichiers autour d'une interface de programme que je peux conduire à partir d'ASP.NET?

Répondre

3

la question a trois sous-questions:

1) Le choix du protocole de transfert sécurisé

La version sécurisée de l'ancien FTP existe - il est appelé FTP/SSL (ancienne plaine FTP sur le canal crypté SSL). Peut-être pouvez-vous toujours utiliser votre ancienne infrastructure de déploiement - vérifiez simplement si elle prend en charge le protocole FTPS ou FTP/SSL.

Vous pouvez vérifier les détails sur les différences FTP, FTP/SSL et SFTP au http://www.rebex.net/secure-ftp.net/.

2) SFTP ou FTP/serveur SSL pour Windows

Lorsque vous choisissez d'utiliser ou non SFTP ou FTPS vous devez déployer le serveur approprié. Pour FTP/SSL, nous utilisons le Gene6 (http://www.g6ftpserver.com/) sur plusieurs serveurs sans problèmes. Il y a beaucoup de serveurs FTP/SSL Windows alors utilisez ce que vous voulez. La situation est un peu plus compliquée avec le serveur SFTP pour Windows - il n'y a que quelques implémentations de travail. Le Bitvise WinHTTPD semble très prometteur (http://www.bitvise.com/winsshd).

3) Composant de transfert de fichiers Internet pour ASP.NET

La dernière partie de la solution est le transfert sécurisé de fichiers depuis asp.net. Il y a plusieurs composants sur le marché. Je recommande le Rebex File Transfer Pack - il prend en charge FTP (et FTP/SSL) et SFTP (transfert de fichiers SSH).

Le code suivant montre comment télécharger un fichier sur le serveur via SFTP. Le code provient de notre Rebex SFTP tutorial page.

// create client, connect and log in 
Sftp client = new Sftp(); 
client.Connect(hostname); 
client.Login(username, password); 

// upload the 'test.zip' file to the current directory at the server 
client.PutFile(@"c:\data\test.zip", "test.zip"); 

// upload the 'index.html' file to the specified directory at the server 
client.PutFile(@"c:\data\index.html", "/wwwroot/index.html"); 

// download the 'test.zip' file from the current directory at the server 
client.GetFile("test.zip", @"c:\data\test.zip"); 

// download the 'index.html' file from the specified directory at the server 
client.GetFile("/wwwroot/index.html", @"c:\data\index.html"); 

// upload a text using a MemoryStream 
string message = "Hello from Rebex SFTP for .NET!"; 
byte[] data = System.Text.Encoding.Default.GetBytes(message); 
System.IO.MemoryStream ms = new System.IO.MemoryStream(data); 
client.PutFile(ms, "message.txt"); 

Martin

1

Nous avons utilisé une variante de this solution dans le passé qui utilise l'usine de SSH pour

.NET
4

sharpssh met en œuvre l'envoi de fichiers via scp.

0

G'day,

Vous voudrez peut-être regarder ProFPD.

Largement personnalisable. Basé sur la structure du module Apache.

De leur site web:

ProFTPD est née du désir d'avoir un serveur FTP sécurisé et configurable, et hors d'une admiration importante du serveur web Apache.

Nous utilisons notre version adaptée pour le transfert de contenu Web à grande échelle. En général, 300 000 mises à jour par jour.

HTH

acclamations,

Rob

1

Le remplacement sécurisé traditionnel pour FTP est SFTP, mais si vous avez assez de contrôle sur les deux extrémités, vous pourriez envisager rsync à la place: il est hautement configurable, sécurisez simplement en lui disant d'utiliser ssh, et beaucoup plus efficace pour garder deux endroits synchronisés.

Questions connexes