Frage

Aus Sicherheitsgründen müssen wir vom herkömmlichen FTP Abstand nehmen (es überträgt seine Passwörter unverschlüsselt).Ich höre, dass SSH als offensichtliche Alternative angepriesen wird.Allerdings habe ich FTP über eine ASP.NET-Programmschnittstelle gesteuert, um die Entwicklung meiner Website zu automatisieren, die inzwischen ein ziemlich webfähiger Prozess ist.

Kann jemand eine sichere Methode zum Übertragen von Dateien empfehlen, die über eine Programmschnittstelle verfügt, die ich von ASP.NET aus steuern kann?

War es hilfreich?

Lösung

Die Frage besteht aus drei Unterfragen:

1) Auswahl des sicheren Übertragungsprotokolls

Es gibt die sichere Version des alten FTP – sie heißt FTP/SSL (einfacher alter FTP-über-SSL-verschlüsselter Kanal).Möglicherweise können Sie Ihre alte Bereitstellungsinfrastruktur weiterhin verwenden – prüfen Sie einfach, ob diese FTPS oder FTP/SSL unterstützt.

Einzelheiten zu den Unterschieden zwischen FTP, FTP/SSL und SFTP finden Sie unter http://www.rebex.net/secure-ftp.net/ Seite.

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

Wenn Sie sich entscheiden, ob Sie SFTP oder FTPS verwenden möchten, müssen Sie den richtigen Server bereitstellen.Für FTP/SSL verwenden wir das Gene6 (http://www.g6ftpserver.com/) auf mehreren Servern ohne Probleme.Es gibt viele FTP/SSL-Windows-Server, also nutzen Sie, was Sie wollen.Beim SFTP-Server für Windows ist die Situation etwas komplizierter – es gibt nur wenige funktionierende Implementierungen.Der Bitvise WinHTTPD sieht recht vielversprechend aus (http://www.bitvise.com/winsshd).

3) Internet-Dateiübertragungskomponente für ASP.NET

Der letzte Teil der Lösung ist die sichere Dateiübertragung von asp.net.Es gibt mehrere Komponenten auf dem Markt.Ich würde das empfehlen Rebex-Dateiübertragungspaket - 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 stammt aus unserem Rebex SFTP-Tutorialseite.

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

Andere Tipps

scharfsch implementiert das Senden von Dateien über scp.

Wir haben eine Variation von verwendet diese Lösung in der Vergangenheit, die die SSH Factory für .NET verwendet

Der traditionelle sichere Ersatz für FTP ist SFTP, aber wenn Sie genügend Kontrolle über beide Endpunkte haben, könnten Sie darüber nachdenken rsync stattdessen:Es ist hochgradig konfigurierbar, sicher durch die einfache Anweisung, SSH zu verwenden, und weitaus effizienter, wenn es darum geht, zwei Standorte synchron zu halten.

Tag auch,

Vielleicht möchten Sie es sich ansehen ProFPD.

Stark anpassbar.Basierend auf der Apache-Modulstruktur.

Von ihrer Website:

ProFTPD entstand aus dem Wunsch nach einem sicheren und konfigurierbaren FTP-Server und aus einer großen Bewunderung für den Apache-Webserver.

Wir verwenden unsere angepasste Version für die groß angelegte Übertragung von Webinhalten.Typischerweise 300.000 Updates pro Tag.

HTH

Prost,

rauben

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top