2008-09-02 5 views
2

Wir müssen aus Sicherheitsgründen das traditionelle FTP entfernen (es überträgt seine Passwörter unverschlüsselt). Ich höre, dass SSH als die offensichtliche Alternative angepriesen wird. Allerdings habe ich FTP von einer ASP.NET-Programmoberfläche getrieben, um meine Web-Site-Entwicklung zu automatisieren, die jetzt ein ziemlich hoch webfähiger Prozess ist.Programmierbare, sichere FTP-Ersetzung

Kann jemand eine sichere Methode zum Übertragen von Dateien mit einer Programmschnittstelle empfehlen, die ich von ASP.NET aus steuern kann?

Antwort

3

die Frage hat drei Teilfragen:

1) Auswahl des sicheren Übertragungsprotokolls

Die sichere Version des alten FTP existiert - es FTP/SSL (plain old FTP über SSL verschlüsselten Kanal) genannt wird. Vielleicht können Sie Ihre alte Deployment-Infrastruktur trotzdem nutzen - prüfen Sie einfach, ob sie FTPS oder FTP/SSL unterstützt.

Sie können Details über FTP, FTP/SSL und SFTP-Unterschiede unter Seite überprüfen.

2) SFTP oder FTP/SSL-Server für Windows

Wenn Sie wählen, ob Sie SFTP oder FTPS verwenden müssen den richtigen Server implementieren. Für FTP/SSL verwenden wir das Gene6 (http://www.g6ftpserver.com/) auf mehreren Servern ohne Probleme. Es gibt viele FTP/SSL Windows-Server, so dass Sie verwenden können, was Sie wollen. Die Situation ist mit SFTP Server für Windows etwas komplizierter - es gibt nur wenige funktionierende Implementierungen. Das BitVise WinHTTPD sieht vielversprechend aus (http://www.bitvise.com/winsshd).

3) Internet File Transfer Komponente für ASP.NET

Der letzte Teil der Lösung ist sichere Dateiübertragung von asp.net. Es gibt mehrere Komponenten auf dem Markt. Ich würde die Rebex File Transfer Pack empfehlen - es unterstützt sowohl FTP (und FTP/SSL) als auch SFTP (SSH File Transfer).

Der folgende Code zeigt, wie eine Datei über SFTP auf den Server hochgeladen wird. Der Code ist unserer Rebex SFTP tutorial page entnommen.

// 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

Wir haben eine Variation von this solution in der Vergangenheit, die verwendet die SSH-Fabrik für .NET

4

sharpssh Geräte Senden von Dateien via scp verwendet.

0

G'day,

Sie könnten ProFPD aussehen mögen.

Stark anpassbar. Basierend auf Apache-Modulstruktur.

Von ihrer Website:

ProFTPD aus dem Wunsch wuchs einen sicheren und konfigurierbare FTP-Server zu haben, und aus einer bedeutenden Bewunderung des Apache Web-Servers.

Wir verwenden unsere angepasste Version für die Übertragung von Webinhalten in großem Maßstab. In der Regel 300.000 Updates pro Tag.

HTH

prost,

Rob

1

Die traditionelle sicherer Ersatz für FTP ist SFTP, aber wenn man genug Kontrolle über beide Endpunkte haben, können Sie rsync stattdessen betrachten: es in hohem Maße konfigurierbar ist, Sichern Sie sie, indem Sie ihr sagen, dass sie ssh verwenden sollen, und viel effizienter, um zwei Standorte synchron zu halten.