Pergunta

Precisamos abandonar o FTP tradicional por motivos de segurança (ele transmite suas senhas sem criptografia).Estou ouvindo o SSH ser apontado como a alternativa óbvia.No entanto, tenho conduzido o FTP a partir de uma interface de programa ASP.NET para automatizar o desenvolvimento do meu site, que agora é um processo altamente habilitado para a web.

Alguém pode recomendar uma maneira segura de transferir arquivos com uma interface de programa que eu possa controlar no ASP.NET?

Foi útil?

Solução

a questão tem três subquestões:

1) escolha do protocolo de transferência seguro

A versão segura do FTP antigo existe - é chamada FTP/SSL (FTP antigo simples sobre canal criptografado SSL).Talvez você ainda possa usar sua infraestrutura de implantação antiga - basta verificar se ela suporta FTPS ou FTP/SSL.

Você pode verificar detalhes sobre diferenças entre FTP, FTP/SSL e SFTP em http://www.rebex.net/secure-ftp.net/ página.

2) Servidor SFTP ou FTP/SSL para Windows

Ao escolher usar SFTP ou FTPS, você deve implantar o servidor adequado.Para FTP/SSL usamos o Gene6 (http://www.g6ftpserver.com/) em vários servidores sem problemas.Existem muitos servidores FTP/SSL Windows, então use o que quiser.A situação é um pouco mais complicada com o servidor SFTP para Windows - existem apenas algumas implementações funcionais.O Bitvise WinHTTPD parece bastante promissor (http://www.bitvise.com/winsshd).

3) Componente de transferência de arquivos da Internet para ASP.NET

A última parte da solução é a transferência segura de arquivos do asp.net.Existem vários componentes no mercado.Eu recomendaria o Pacote de transferência de arquivos Rebex - suporta FTP (e FTP/SSL) e SFTP (SSH File Transfer).

O código a seguir mostra como fazer upload de um arquivo para o servidor via SFTP.O código é retirado do nosso Página do tutorial 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");

Martinho

Outras dicas

afiado implementa o envio de arquivos via scp.

Usamos uma variação de esta solução no passado que usa o SSH Factory for .NET

O substituto seguro tradicional para FTP é SFTP, mas se você tiver controle suficiente sobre ambos os endpoints, considere sincronizar novamente em vez de:é altamente configurável, seguro apenas dizendo para usar ssh e muito mais eficiente para manter dois locais sincronizados.

Bom dia,

Você pode gostar de olhar ProFPD.

Fortemente customizável.Baseado na estrutura do módulo Apache.

Do site deles:

O ProFTPD surgiu do desejo de ter um servidor FTP seguro e configurável e de uma admiração significativa pelo servidor web Apache.

Usamos nossa versão adaptada para transferência em larga escala de conteúdo da web.Normalmente 300.000 atualizações por dia.

HTH

saúde,

Roubar

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top