Программируемая, безопасная замена FTP - PullRequest
2 голосов
/ 02 сентября 2008

В целях безопасности нам нужно отключить традиционный FTP (он передает свои пароли в незашифрованном виде). Я слышу, что SSH рекламируется как очевидная альтернатива. Однако я управлял FTP из интерфейса программы ASP.NET, чтобы автоматизировать разработку моего веб-сайта, который в настоящее время является довольно активным процессом.

Может кто-нибудь порекомендовать безопасный способ передачи файлов, вокруг которого есть программный интерфейс, который я могу использовать из ASP.NET?

Ответы [ 5 ]

4 голосов
/ 02 сентября 2008

sharpssh осуществляет отправку файлов через scp.

3 голосов
/ 17 сентября 2008

вопрос имеет три подвопроса:

1) выбор протокола защищенной передачи

Существует защищенная версия старого FTP - она ​​называется FTP / SSL (обычный старый FTP через зашифрованный канал SSL). Возможно, вы все еще можете использовать свою старую инфраструктуру развертывания - просто проверьте, поддерживает ли она FTPS или FTP / SSL.

Подробные сведения о различиях между FTP, FTP / SSL и SFTP можно найти на странице http://www.rebex.net/secure-ftp.net/.

2) SFTP или FTP / SSL сервер для Windows

Когда вы выбираете, использовать ли SFTP или FTPS, вы должны развернуть соответствующий сервер. Для FTP / SSL мы используем Gene6 (http://www.g6ftpserver.com/) на нескольких серверах без проблем. Существует множество серверов FTP / SSL для Windows, поэтому используйте все, что вы хотите. С SFTP-сервером для Windows ситуация немного сложнее - там это всего лишь несколько рабочих реализаций. WinHTTPD Bitvise выглядит довольно многообещающе (http://www.bitvise.com/winsshd).

3) Компонент передачи файлов через Интернет для ASP.NET

Последняя часть решения - безопасная передача файлов с asp.net. На рынке есть несколько компонентов. Я бы порекомендовал Rebex File Transfer Pack - он поддерживает как FTP (и FTP / SSL), так и SFTP (SSH File Transfer).

Следующий код показывает, как загрузить файл на сервер через SFTP. Код взят со страницы Rebex SFTP .

// 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 голос
/ 02 сентября 2008

Традиционной безопасной заменой для FTP является SFTP , но если у вас достаточно контроля над обоими конечными точками, вы можете рассмотреть вариант rsync : он легко настраивается и защищается, просто сказав ему использовать ssh и гораздо более эффективно поддерживать синхронизацию двух местоположений.

1 голос
/ 02 сентября 2008

В прошлом мы использовали вариант этого решения , который использует фабрику SSH для .NET

0 голосов
/ 02 сентября 2008

G'day,

Возможно, вы захотите взглянуть на ProFPD .

Сильно настраиваемый. Основан на структуре модуля Apache.

С их сайта:

ProFTPD вырос из желания иметь безопасный и настраиваемый FTP-сервер и из-за значительного восхищения веб-сервером Apache.

Мы используем нашу адаптированную версию для крупномасштабной передачи веб-контента. Обычно 300 000 обновлений в день.

НТН

ура

Rob

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...