Biblioteki SFTP dla .NET [zamknięte]

109

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

Jeśli ktoś używał ich wcześniej, czy jest jakiś powód, dla którego powinienem używać produktu „X” zamiast „Y”?

Kiquenet
źródło
Czy istnieje biblioteka SFTP licencjonowana w ramach MIT?
Yash Saraiya
Możesz sprawdzić szczegółową recenzję dla komponentu SFTP dla NET thedownloadplanet.com/reviews/ ...
alexanoid

Odpowiedzi:

87

Rozejrzałem się i znalazłem to ten widelec SharpSSHi SSH.NET to najbardziej aktualne i najlepiej utrzymywane biblioteki do komunikacji SFTP (nie mylić z FTPS ) w .NET. SSH.NET to czysta implementacja protokołu SFTP w .NET 4.0 i użyłem go w kilku rozwiązaniach, które odniosły wielki sukces.

Oryginalny SharpSsh wydaje się być martwy, a większość innych rozwiązań wymaga instalacji plików wykonywalnych Windows lub sporej ilości gotówki (lub, co gorsza, obu).

Asbjørn Ulsberg
źródło
6
Użyłem również SSH.NET ( sshnet.codeplex.com ) i stwierdziłem, że jest doskonały.
Alex
10
Okazało się, że SSH.NET od razu zawiera błędy. Sprawdzanie, czy plik / katalog istnieje, zawsze zwracane jest jako prawda. Wiele otwartych i uznanych kwestii na liście spraw odstraszyło mnie od tego projektu.
Ronnie Overby
1
@RonnieOverby Szukałem problemu, o którym wspomniałeś, dotyczącego pliku / katalogu, ale problem już nie istnieje. Napisałem kod do testowania SSH.NET i działa zgodnie z oczekiwaniami.
Colin,
4
SharpSSH widelec jest zbyt martwy (ostatnia aktualizacja we wrześniu 2012 roku).
Martin Prikryl
3
Dziękuję, po ich porównaniu SSH.NET wydaje się być czystszy i łatwiejszy w użyciu. Zaktualizuję odpowiedź po zakończeniu projektu, w którym ich używam. Dziękuję,
Nour Lababidi
52

Używamy WinSCP. Jest wolne. Nie jest to biblioteka, ale ma dobrze udokumentowany iw pełni funkcjonalny interfejs wiersza poleceń, którego można używać z Process.Start.

Aktualizacja: w wersji 5.0, WinSCP zawiera bibliotekę .NET wrapper do warstwy skryptów WinSCP.

Jim
źródło
1
Dla mnie wygląda całkiem nieźle: winscp.net/eng/docs/library#example
Jon Cage
4
Z powodzeniem użyłem zestawu WinSCP .NET (winscpnet.dll), opakowania w interfejsie skryptowym WinSCP. Tak, naprawdę, jest to dobrze udokumentowane. Ma wiele przykładów. Jeśli przekażesz niepoprawne parametry, otoka zgłosi wyjątek szczegółowo opisujący, co jest nie tak. Potrzebowałem kilku prób i błędów, aby uzyskać prawidłowe parametry, bez winy WinSCP, tylko moje pomyłki między 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,
WinSCP jest objęty licencją GPL. Czy jest coś, z czym mogę pracować na licencji MIT?
Yash Saraiya
1
Montaż @YashSaraiya WinSCP .NET jest objęty licencją na podstawie MPL 2.0 , a nie GPL.
Martin Prikryl,
1
Nie dobrze, winscp jest powiązany z plikiem .exe, który jest nieskuteczny w przypadku programowania na wiele platform.
Alwyn
9

Sprawdź to: http://www.tamirgal.com/home/dev.aspx?Item=sharpSsh

SharpSSH to czysta implementacja pakietu protokołów klienta SSH2 .NET. Zapewnia interfejs API do komunikacji z serwerami SSH i może być zintegrowany z dowolną aplikacją .NET.

Biblioteka jest portem C # projektu JSch firmy JCraft Inc. i jest udostępniana na licencji w stylu BSD.

SharpSSH umożliwia odczytywanie / zapisywanie danych i przesyłanie plików przez kanały SSH przy użyciu interfejsu API podobnego do API JSch. Ponadto zapewnia dodatkowe klasy opakowania, które oferują jeszcze prostszą abstrakcję dla komunikacji SSH.

Strona projektu SharpSSH w source forge: http://sourceforge.net/projects/sharpssh

GEOCHET
źródło
9
fajne rzeczy, ale nie były aktualizowane od 2007 roku, potrzebują czegoś dla .net 4
Johnny_D Kwietnia
1
Zobacz moją odpowiedź na temat czegoś, co jest aktualizowane i aktywnie utrzymywane.
Asbjørn Ulsberg
10
Korzystałem z tej biblioteki i nie polecam. Zadziałało, ale wydawało się, że to niekompletny port: niektórych funkcji brakowało w klasach najwyższego poziomu (testowanie, czy istnieją pliki IIRC) i musiałem wywołać metody z pól prywatnych, aby działały; skomentowane fragmenty kodu Java pozostawione w źródle; klasy opakowujące nazwane na podstawie klas w standardowej bibliotece Java; Idiomy języka Java w całym tekście. Zamiast tego użyłem SSH.NET (jak w poście @ asbjornu) z wielkim sukcesem.
Alex
8

Kupiliśmy pakiet transferu plików Rebex i wszystko jest w porządku. API jest łatwe, nie mamy żadnych problemów z komunikacją, serwerami proxy itp.

Ale nie miałem okazji porównać tego z innym komponentem SFTP / FTPS.

TcKs
źródło
Należy pamiętać, że SFTP i FTPS to nie ten sam protokół.
Trent
6

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

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

Obecnie testuję to do własnych celów i zaktualizuję o moje ustalenia.

aktualizacja

Ten pomysł nie jest idealny do automatyzacji nienadzorowanej, chyba że chcesz przeskoczyć przez obręcze utrzymujące klienta w postaci usługi lub czegoś innego, co osiągnąłem za pomocą NSSM .

Próbowałem automatyzacji CLI z różnymi klientami, w tym bitvise i winscp.com. Wypróbowałem również te biblioteki klas .net: Winscp, SSH.NET, SharpSSH i komercyjny klient 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 zgadzałem się tak bardzo z jego API.

Bez wątpienia najlepszym darmowym klientem sftp do programowania .NET jest winscp . Napisałem kilka klas i metod rozszerzających, aby ułatwić pracę: Winscp.Extensions

Ronnie Overby
źródło
4

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

Rocklan
źródło
2
Chilkat nie jest kodem zarządzanym w 100%. Jest to natywna biblioteka zapakowana w .NET. Włączenie tej biblioteki zepsuło projektanta stron internetowych Visual Studio, ponieważ VS działa w trybie 32-bitowym. Musieliśmy stworzyć wszystkie te obejścia między dev i prod (który jest w wersji 64-bitowej), aby mógł używać właściwej biblioteki DLL, a nie zabawnie. To obejście wymaga, aby GAC miał zarówno 32-bitową, jak i 64-bitową bibliotekę DLL zainstalowaną na maszynach docelowych: chilkatforum.com/questions/114/ ...
Chris Smith
0

Aby uzyskać pełną obsługę SFTP w .NET, wypróbuj edtFTPnet / PRO . Obsługa wielu różnych serwerów SFTP trwa już od dawna.

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

Bruce Blackshaw
źródło
Używam biblioteki edtFTPnet od jakiegoś czasu - działa dobrze, ale dokumentacja dotycząca powiązań .net nie jest świetna.
Jon Cage,
0

Użyłem IP * Works SSH i jest super. Łatwy w instalacji i obsłudze. Ponadto ich wsparcie jest na najwyższym poziomie, gdy napotkasz pytania lub problemy.

Briggs
źródło