2009-02-09 13 views
86

Czy ktoś może polecić dobrą bibliotekę SFTP do użycia? Obecnie patrzę na produkty takie jak SecureBlackbox, IPWorks SSH, WodSFTP i Rebex SFTP. Jednak nigdy wcześniej nie korzystałem z biblioteki SFTP, więc nie jestem pewien, czego szukam.Biblioteki SFTP dla .NET

Jeśli ktokolwiek używał ich wcześniej, czy istnieje jakiś powód, dla którego powinienem wybrać produkt "X" zamiast "Y"?

+0

możliwy duplikat [Jak przesłać plik na serwer SFTP w C#/.NET?] (Http://stackoverflow.com/questions/86458/how-do-i-upload-a-file-to -an-sftp-server-in-c-sharp-net) –

+0

Czy istnieje biblioteka SFTP licencjonowana w ramach MIT? –

Odpowiedz

6

Kupiliśmy pakiet przesyłania plików Rebex i wszystko jest w porządku. Interfejs API jest prosty, nie mamy żadnego problemu z komunikacją, serwerami proxy itp.

Ale nie mam szansy na porównanie go z innym komponentem SFTP/FTPS.

+1

Zgadzam się z tym stwierdzeniem. +1 – Pat

+0

Należy pamiętać, że SFTP i FTPS nie są tym samym protokołem. – Trent

10

to sprawdzić: http://www.tamirgal.com/home/dev.aspx?Item=sharpSsh

SharpSSH to czysta implementacja .NET z SSH2 protokołów klient apartamencie. To zapewnia interfejs API do komunikacji z serwerami SSH i może być zintegrowany z każdą aplikacją .NET w .

Biblioteka jest portem C# projektu JSch firmy JCraft Inc. i jest wydana w ramach licencji na styl BSD.

SharpSSH umożliwia odczytywanie/zapisywanie danych i przesyłanie plików za pośrednictwem kanałów SSH przy użyciu interfejsu API podobnego do interfejsu API JSch. W dodatku zapewnia dodatkowe klasy opakowujące , które oferują nawet prostszą abstrakcję dla dla komunikacji SSH .

SharpSSH strona projektu na SourceForge: http://sourceforge.net/projects/sharpssh

+7

fajne rzeczy, ale nie zaktualizowano od 2007 roku, potrzebuję czegoś do .net 4 –

+1

Zobacz moją odpowiedź na coś, co jest aktualizowane i aktywnie utrzymywane. –

+9

Użyłem tej biblioteki i nie polecam jej. Udało się, ale wydawało się, że jest to niepełny port: brakowało niektórych funkcji w klasach najwyższego poziomu (testowanie, czy pliki istnieją w IIRC), i musiałem wywoływać metody na prywatnych polach, aby uruchomić je; skomentowane fragmenty kodu Java pozostawione w źródle; klasy opakowujące o nazwach po nich w standardowej bibliotece Java; Idiomy w języku Java w całym tekście. Użyłem SSH.NET zamiast (jak w @ postu asbjornu) z wielkim sukcesem. – Alex

0

Dla kompleksowego wsparcia SFTP w .NET spróbować edtFTPnet/PRO. Od dłuższego czasu obsługuje wiele różnych serwerów SFTP.

Sprzedajemy również serwer SFTP dla systemu Windows, CompleteFTP, który jest niedrogim sposobem uzyskania wsparcia dla SFTP na komputerze z systemem Windows. Ma również FTP i FTPS.

+0

Używam biblioteki edtFTPnet od jakiegoś czasu - działa dobrze, ale dokumentacja powiązań .net nie jest świetna. –

43

Używamy WinSCP. Jest wolne. To nie jest lib, ale ma dobrze udokumentowany i w pełni funkcjonalny interfejs wiersza poleceń, którego można używać z Process.Start.

Aktualizacja: z wersji 5.0, WinSCP ma a .NET wrapper library do warstwy skryptów WinSCP.

+1

Wygląda całkiem nieźle: http://winscp.net/eng/docs/library#example –

+3

Z powodzeniem skorzystałem z zestawu WinSCP .NET (winscpnet.dll), otoki na interfejsie skryptowym WinSCP. Tak, naprawdę, jest dobrze udokumentowany. Ma wiele przykładów. Jeśli przekażesz niepoprawne parametry, opakowanie wygeneruje wyjątek określający, co jest nie tak. Zajęło mi kilka prób i błędów, aby uzyskać prawidłowe parametry, bez winy WinSCP, tylko moje pomylenie ftps i sftp. Pamiętaj też, aby skopiować plik WinSCP.exe do folderu bin aplikacji; lub możesz ustawić Session.ExecutablePath przed wywołaniem Session.Open(). – Edward

+0

WinSCP jest licencjonowany na licencji GPL. Czy jest coś, z czym mogę pracować z licencją MIT? –

0

Użyłem IP * Działa SSH i jest świetny. Łatwy w instalacji i obsłudze. Dodatkowo, ich wsparcie jest na najwyższym poziomie, gdy masz pytania lub problemy.

3

Używam natywnej biblioteki SFTP Chilkata (http://www.chilkatsoft.com/ssh-sftp-component.asp) od kilku miesięcy i działa świetnie. Używałem go w nocnej pracy do pobierania dużych plików i uwierzytelniania klucza prywatnego. Jedynym problemem, jaki miałem, było uzyskanie 64-bitowej wersji do pracy na Windows Server 2008, potrzebowałem zainstalować vcredist_x64.exe (http://www.microsoft.com/download/en/details.aspx?id=14632) na moim serwerze.

+0

Chilkat nie jest w 100% zarządzanym kodem. Jest to natywna biblioteka zapakowana w .NET. Kiedy włączyliśmy tę bibliotekę, zepsuła ona projektanta stron WWW dla studia wizualnego, ponieważ VS działa w trybie 32-bitowym.Musieliśmy stworzyć wszystkie te prace dookoła między dev i prod (który jest w wersji 64-bitowej), aby mógł korzystać z właściwej biblioteki DLL, a nie z zabawy. Praca wymaga, aby GAC miał zainstalowane 32- i 64-bitowe biblioteki DLL na komputerach docelowych: http://www.chilkatforum.com/questions/114/64bit-could-not-load-file-or-assembly-chilkatdotnet4-or -jeden-of-its-dependencies-a-attempt-was-to-load-a-program-with-an-invalid-format –

5

Bitvise ma świetny produkt o nazwie Tunnelier, który może łączyć FTP z SFTP. Następnie można użyć standardowego FtpWebRequest w .NET.

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

Ja obecnie testuje to dla własnych celów i zaktualizuje z moich ustaleń.

aktualizacja

Ten pomysł nie jest idealny do automatyzacji bez nadzoru, chyba że chcesz skakać przez obręcze, utrzymując klienta podłączonego jako usługa lub coś, co osiągnąłem stosując NSSM.

Próbowałem automatyzacji CLI z różnymi klientami, w tym bitvise i winscp.com. Próbowałem również tych bibliotek .net class: Winscp, SSH.NET, SharpSSH i komercyjnego klienta SecureBlackBox SFTP.

SecureBlackBox działał dobrze, ale jest bardzo ciężki, może być dość drogi w zależności od licencji, a ja nie zgadzam się z API.

Odrzucone, najlepszym darmowym klientem sftp do rozwoju .NET jest winscp. Pisałem kilka klas i metod przedłużających, aby praca z nim łatwiej: Winscp.Extensions

69

Rozglądałem się dookoła i stwierdził, że this fork of SharpSSH i SSH.NET są najbardziej aktualne i najlepiej zachowanych bibliotek dla SFTP (nie mylić z FTPS) komunikacja w .NET. SSH.NET to czysta implementacja protokołu SFTP na platformie .NET 4.0, a ja użyłem go w kilku rozwiązaniach, które mają latające kolory i wielki sukces.

Oryginalny SharpSsh wydaje się być martwy, a większość innych rozwiązań wymaga instalacji plików wykonywalnych Windows lub mnóstwo pieniędzy (lub gorzej, obie).

+5

Użyłem również SSH.NET (http: //sshnet.codeplex. com /) i stwierdził, że jest doskonały. – Alex

+7

Znalazłem SSH.NET, aby być buggy tuż przy kiju. Sprawdzanie, czy plik/katalog istnieje, zawsze zwraca true. Wiele otwartych i przegłosowanych kwestii na liście problemów wyłączyło mnie z projektu. –

+1

@RonnieOverby Sprawdziłem, czy problem, o którym wspomniałeś, dotyczy pliku/katalogu, a problem już nie istnieje. Napisałem kod, aby przetestować SSH.NET i działa zgodnie z oczekiwaniami. – Colin