Pergunta

Enquanto procurava um cliente SFTP no C# SSH Transfer Protocol (SFTP), encontrei esses dois projetos adequados - 1 e dois.

Enquanto tentava entender o básico, me deparei com este confuso Artigo da Wikipedia. Qual é a diferença entre SFTP e FTP sobre SSH? Nenhuma biblioteca parece dar suporte ao "FTP sobre SSH", se for diferente.

Foi útil?

Solução

Aqui está a diferença:

  • Sftp (Protocolo de transferência de arquivos SSH) é um protocolo que fornece recursos de transferência de arquivos e manipulação. Pode funcionar em qualquer fluxo de dados confiável, mas normalmente é usado com ssh
  • "FTP sobre ssh" usa o protocolo FTP antigo comum, mas um Túnel SSH é colocado entre cliente e servidor.

Você provavelmente não encontrará bibliotecas para "FTP sobre SSH" porque normalmente o túnel é configurado executando um comando ssh e, uma vez configurado, clientes e servidores não precisam saber sobre o túnel; Eles apenas abrem portos e transferem dados da maneira que fariam sem um túnel.

Btw, mais uma opção para você pode ser FTP sobre SSL (FTPS), que é suportado por .Net. (Ver http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.enablessl.aspx.)

Outras dicas

Basicamente, existem os seguintes protocolos de transferência de arquivos em torno de:

  • FTP - O antigo protocolo FTP simples que existe desde a década de 1970. O acrônimo significa "protocolo de transferência de arquivos". Geralmente atropela a porta TCP 21.

  • SFTP - outro protocolo de transferência de arquivos completamente diferente que não tem nada a ver com FTP. O SFTP percorre uma sessão SSH, geralmente na porta TCP 22. Ele existe desde o final dos anos 90. O acrônimo realmente significa "protocolo de transferência de arquivos SSH".

  • FTP sobre SSH - 1) Exemplo possível, mas extremamente raro de protocolo FTP, tocados através de um canal SSH 2) incorretamente chamado SFTP

(Para detalhes, veja "Seguro FTP, FTP/SSL, SFTP, FTPS, FTP, SCP ... Qual é a diferença?"Página em Rebex)

Isenção de responsabilidade: eu trabalho para Rebex

O SFTP é na verdade outro protocolo que atropela o SSH - uma extensão do SSH, se você quiser. As pessoas tendem a usar o SFTP em vez de tuntar o FTP sobre o SSH.

Para um suporte abrangente do SFTP no .NET Tente edtftpnet/pro. Já faz há muito tempo com suporte para muitos servidores SFTP diferentes.

O SFTP é seu próprio protocolo. O FTP Over SSH está usando FTP quando você estiver conectado via SSH.

O FTP sobre o SSH é o protocolo FTP simples tunelado através do SSH. O SFTP é o mecanismo de transferência de arquivos oferecido pelo SSH e é um protocolo completamente diferente. Eu não vi ninguém usando FTP sobre SSH.

  • SFTP significa SSH Arquivo Transfer Protocol. Não é FTP sobre SSL e não FTP sobre SSH. O SFTP é padronizado no RFC 4253.
  • O FTP significa Protocolo de Transferência de Arquivos, definido pela RFC 959 e mais adições. O FTP é muito popular, mas não garantido. Portanto, o FTP sobre SSL foi introduzido e é chamado FTPS ou FTP/SSL.

Para autenticação, o SFTP use as teclas SSH, enquanto os FTPs usam certificados X.509.

Eu uso o SharpSsh há anos e funciona muito bem. Embora não tenha visto nenhum desenvolvimento há algum tempo, o código -fonte é fácil de entender e trabalhar. Fiz ajustes e o recorrei para meus próprios projetos sem problemas, embora funcione bem como está sem a necessidade disso.

Se você não precisar fazer nada extravagante, também pode escrever seu próprio wrapper .Net para o cliente PSFTP.EXE da Putty com código muito mínimo.

Embora eu nunca tenha usado a biblioteca SFTP de Greg Finzer, eu o conheço pessoalmente e fortemente que ele tem um produto de qualidade se você precisar de algo ativamente desenvolvido e robusto. Mas para as coisas simples, tive um grande sucesso com as opções gratuitas que mencionei.

Acabei de criar um .NET SFTP Library. Uma das coisas que aprendi no processo é o quão diferente é o FTP para o SFTP. Na verdade, você está se comunicando com um servidor SSH em vez de um servidor FTP. Não é apenas o protocolo, os comandos são totalmente diferentes que você está enviando para o servidor SSH.

Aqui está um link para minha biblioteca.

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