2009-02-09 15 views
86

¿Alguien puede recomendar una buena biblioteca SFTP para usar? En este momento estoy viendo productos como SecureBlackbox, IPWorks SSH, WodSFTP y Rebex SFTP. Sin embargo, nunca he usado ninguna biblioteca de SFTP, así que no estoy seguro de lo que estoy buscando.Bibliotecas SFTP para .NET

Si alguien ha usado estos antes, ¿hay alguna razón por la que debería ir con el producto "X" sobre "Y"?

+0

posible duplicado de [¿Cómo cargo un archivo en un servidor SFTP en C#/.NET?] (Http://stackoverflow.com/questions/86458/how-do-i-upload-a-file-to -an-sftp-server-in-c-sharp-net) –

+0

¿Hay una biblioteca SFTP autorizada bajo MIT? –

Respuesta

6

Compramos un paquete de transferencia de archivos Rebex, y todo está bien. La API es fácil, no tenemos ningún problema con las comunicaciones, servidores proxy, etc ...

Pero no tengo la oportunidad de compararlo con otro componente de SFTP/FTPS.

+1

Estoy de acuerdo con esta afirmación. +1 – Pat

+0

Tenga en cuenta que SFTP y FTPS no son el mismo protocolo. – Trent

10

mira esto: http://www.tamirgal.com/home/dev.aspx?Item=sharpSsh

SharpSSH es una aplicación .NET pura del conjunto de protocolos de cliente SSH2. Es proporciona una API para la comunicación con los servidores SSH y se puede integrar en cualquier aplicación .NET.

La biblioteca es un puerto # C del proyecto JSch de JCraft Inc. y es liberado bajo la licencia BSD.

SharpSSH le permite leer/escribir datos y transferir archivos a través de los canales SSH usando una API similar a la API de JSch. En Además, proporciona algunas clases adicionales de contenedor que ofrecen incluso abstracción más simple para la comunicación SSH .

página SharpSSH proyecto en Source Forge: http://sourceforge.net/projects/sharpssh

+7

cosas interesantes, pero no se ha actualizado desde 2007, necesita algo para .net 4 –

+1

Consulte mi respuesta para obtener información actualizada y mantenida activamente. –

+9

Utilicé esta biblioteca y no la recomiendo. Funcionó, pero se sentía como un puerto incompleto: algunas características faltaban en las clases de nivel superior (probando si los archivos existían IIRC), y tuve que llamar a métodos en campos privados para que funcionaran; pedazos de código Java comentados en la fuente; clases de envoltura nombradas después de las de la biblioteca estándar de Java; Modismos de Java en todo. He usado SSH.NET en su lugar (como en la publicación de @ asbjornu) con gran éxito. – Alex

0

Para un amplio soporte SFTP en .NET tratar edtFTPnet/PRO. Ha sido durante mucho tiempo compatible con muchos servidores SFTP diferentes.

También vendemos un servidor SFTP para Windows, CompleteFTP, que es una forma económica de obtener soporte para SFTP en su máquina con Windows. También tiene FTP y FTPS.

+0

He utilizado la biblioteca edtFTPnet por algún tiempo; funciona bien, pero la documentación para los enlaces .net no es buena. –

43

Utilizamos WinSCP. Es gratis. No es una lib, pero tiene una interfaz de línea de comandos bien documentada y con todas las funciones que puedes usar con Process.Start.

Actualización: con v.5.0, WinSCP tiene a .NET wrapper library en la capa de scripting de WinSCP.

+1

Me parece bastante bueno: http://winscp.net/eng/docs/library#example –

+3

Utilicé con éxito el ensamblado WinSCP .NET (winscpnet.dll), envoltorio en la interfaz de scripting de WinSCP. Sí, realmente, está bien documentado. Tiene muchos ejemplos. Si pasa parámetros incorrectos, el contenedor arroja una excepción que detalla lo que está mal. Me llevó un poco de prueba y error para obtener los parámetros correctos, sin culpa de WinSCP, solo mi confusión entre ftps y sftp. Además, recuerde copiar WinSCP.exe a la carpeta bin de la aplicación; o puede establecer Session.ExecutablePath antes de llamar a Session.Open(). – Edward

+0

WinSCP tiene licencia bajo GPL. ¿Hay algo con lo que pueda trabajar con licencia bajo MIT? –

0

He usado IP * Works SSH y es genial. Fácil de configurar y utilizar. Además, su apoyo es de primera cuando te encuentras con preguntas o problemas.

3

He estado utilizando la biblioteca SFTP nativa de Chilkat (http://www.chilkatsoft.com/ssh-sftp-component.asp) durante un par de meses y está funcionando muy bien. Lo he usado en un trabajo nocturno para descargar archivos de gran tamaño y autenticar la clave privada. El único problema que tuve fue que la versión de 64 bits funcionara en Windows Server 2008, necesité instalar vcredist_x64.exe (http://www.microsoft.com/download/en/details.aspx?id=14632) en mi servidor.

+0

Chilkat no es 100% código administrado. Es una biblioteca nativa envuelta en .NET. Cuando incorporamos esta biblioteca, se rompió el diseñador web de Visual Studio porque VS se ejecuta en modo de 32 bits.Hemos tenido que crear todo este trabajo alternativo entre dev y prod (que está en 64 bits) para que pueda usar el DLL correcto, no es divertido. La solución alternativa requiere que el GAC tenga DLL de 32 y 64 bits instalados en las máquinas de destino: http://www.chilkatforum.com/questions/114/64bit-could-not-load-file-or-assembly-chilkatdotnet4-or -one-of-its-dependencies-a-attempt-was-made-to-load-a-program-with-an-incorrect-format –

5

Bitvise tiene un excelente producto llamado Tunnelier que puede conectar FTP a SFTP. A continuación, puede utilizar el estándar FtpWebRequest en .NET.

http://www.bitvise.com/ftp-bridge

actualmente estoy probando esto para mis propios fines y se actualizará con mis resultados.

actualización

Esta idea no es ideal para la automatización sin vigilancia, a menos que quiera pasar por el aro manteniendo el cliente conectado como un servicio o algo así, que he logrado mediante el uso de NSSM.

He probado la automatización CLI con varios clientes, incluyendo bitvise y winscp.com. También probé estas bibliotecas de clases .net: Winscp, SSH.NET, SharpSSH y el cliente SecureBlackBox SFTP comercial.

SecureBlackBox funcionó bien, pero es muy pesado, puede ser bastante caro dependiendo de la licencia, y no estoy de acuerdo tanto con su API.

Indiscutiblemente, el mejor cliente de sftp gratuito para el desarrollo .NET es winscp. He escrito un par de clases y métodos de extensión para hacer más fácil trabajar con él: Winscp.Extensions

69

He buscado alrededor y encontré que this fork of SharpSSH y SSH.NET son los más actualizados y bibliotecas mejor mantenidas para SFTP (que no debe confundirse con FTPS) comunicación en .NET. SSH.NET es una implementación limpia de .NET 4.0 del protocolo SFTP, y lo he usado en un par de soluciones con gran éxito y gran éxito.

El original SharpSsh parece estar muerto y la mayoría de las otras soluciones requieren la instalación de ejecutables de Windows o una carga de dinero en efectivo (o algo peor; ambos).

+5

También he usado SSH.NET (http: //sshnet.codeplex. com /) y me pareció excelente. – Alex

+7

Descubrí que SSH.NET tiene fallas desde el principio. La comprobación del archivo/dir existe siempre es verdadero. Los muchos problemas abiertos y con votaciones ascendentes en la lista de problemas me desviaron del proyecto. –

+1

@RonnieOverby Busqué el problema que mencionaste sobre el archivo/dir existe, y el problema ya no existe. Escribí código para probar SSH.NET y funciona como se esperaba. – Colin