Pregunta

Necesitamos abandonar el FTP tradicional por motivos de seguridad (transmite sus contraseñas sin cifrar).Escucho que SSH se promociona como la alternativa obvia.Sin embargo, he estado manejando FTP desde una interfaz de programa ASP.NET para automatizar el desarrollo de mi sitio web, que ahora es un proceso bastante habilitado para la web.

¿Alguien puede recomendar una forma segura de transferir archivos que tenga una interfaz de programa que pueda manejar desde ASP.NET?

¿Fue útil?

Solución

la pregunta tiene tres subpreguntas:

1) elegir el protocolo de transferencia segura

Existe una versión segura del antiguo FTP: se llama FTP/SSL (FTP antiguo sobre canal cifrado SSL).Tal vez aún pueda utilizar su antigua infraestructura de implementación; simplemente verifique si es compatible con FTPS o FTP/SSL.

Puede consultar detalles sobre las diferencias de FTP, FTP/SSL y SFTP en http://www.rebex.net/secure-ftp.net/ página.

2) Servidor SFTP o FTP/SSL para Windows

Cuando elige utilizar SFTP o FTPS, debe implementar el servidor adecuado.Para FTP/SSL utilizamos Gene6 (http://www.g6ftpserver.com/) en varios servidores sin problemas.Hay muchos servidores FTP/SSL de Windows, así que usa el que quieras.La situación es un poco más complicada con el servidor SFTP para Windows: sólo hay unas pocas implementaciones que funcionan.El Bitvise WinHTTPD parece bastante prometedor (http://www.bitvise.com/winsshd).

3) Componente de transferencia de archivos por Internet para ASP.NET

La última parte de la solución es la transferencia segura de archivos desde asp.net.Hay varios componentes en el mercado.Yo recomendaría el Paquete de transferencia de archivos Rebex - Soporta tanto FTP (y FTP/SSL) como SFTP (Transferencia de archivos SSH).

El siguiente código muestra cómo cargar un archivo al servidor a través de SFTP.El código está tomado de nuestro Página de tutoriales de 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");

Martín

Otros consejos

Sharpssh implementa el envío de archivos a través de scp.

Hemos utilizado una variación de esta solución en el pasado que utiliza SSH Factory para .NET

El sustituto seguro tradicional del FTP es SFTP, pero si tiene suficiente control sobre ambos puntos finales, podría considerar sincronización en cambio:es altamente configurable, seguro con solo indicarle que use ssh y mucho más eficiente para mantener dos ubicaciones sincronizadas.

Buen día,

Quizás te guste mirar ProFPD.

Muy personalizable.Basado en la estructura del módulo Apache.

Desde su sitio web:

ProFTPD surgió del deseo de tener un servidor FTP seguro y configurable y de una gran admiración por el servidor web Apache.

Utilizamos nuestra versión adaptada para la transferencia de contenido web a gran escala.Normalmente 300.000 actualizaciones por día.

HT

salud,

Robar

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top