Библиотеки SFTP для .NET [закрыто]

109

Может ли кто-нибудь порекомендовать использовать хорошую библиотеку SFTP? Сейчас я смотрю на такие продукты, как SecureBlackbox, IPWorks SSH, WodSFTP и Rebex SFTP. Однако я никогда раньше не использовал какую-либо библиотеку SFTP, поэтому я не уверен, что ищу.

Если кто-то использовал их раньше, есть ли причина, по которой я должен выбрать продукт «X» вместо «Y»?

Kiquenet
источник
Есть ли библиотека SFTP под лицензией MIT?
Яш Сарайя
Вы можете проверить подробный обзор компонента SFTP для NET thedownloadplanet.com/reviews/…
alexanoid

Ответы:

87

Я поискал и нашел, что это форк SharpSSHи SSH.NET - самые современные и лучше всего обслуживаемые библиотеки для SFTP (не путать с FTPS ) в .NET. SSH.NET - это чистая реализация протокола SFTP в .NET 4.0, и я использовал ее в нескольких решениях с честью и большим успехом.

Оригинал SharpSsh кажется мертвым, и для большинства других решений требуется либо установка исполняемых файлов Windows, либо куча денег (или, что еще хуже, и то и другое).

Асбьёрн Ульсберг
источник
6
Я также использовал SSH.NET ( sshnet.codeplex.com ) и нашел его превосходным.
Alex
10
Я сразу обнаружил, что SSH.NET глючит. Проверка наличия файла / каталога всегда возвращает истину. Множество открытых и получивших одобрение проблем в списке проблем отключили меня от проекта.
Ронни Оверби
1
@RonnieOverby Я искал проблему, о которой вы упомянули о файле / каталоге, существует, и проблема больше не существует. Я написал код для тестирования SSH.NET, и он работает должным образом.
Колин
4
SharpSSH вилка тоже мертва (последнее обновление в сентябре 2012 года ).
Мартин Прикрыл
3
Спасибо, после сравнения SSH.NET кажется чище и проще в использовании. Я обновлю свой ответ после завершения проекта, в котором я их использую. Спасибо,
Нур Лабабиди 01
52

Мы используем WinSCP. Это бесплатно. Это не библиотека, но имеет хорошо документированный и полнофункциональный интерфейс командной строки, который вы можете использовать с Process.Start.

Обновление: с v.5.0 WinSCP имеет библиотеку-оболочку .NET для уровня сценариев WinSCP.

Джим
источник
1
Мне кажется, это неплохо: winscp.net/eng/docs/library#example
Джон Кейдж
4
Я успешно использовал сборку WinSCP .NET (winscpnet.dll), оболочку интерфейса сценариев WinSCP. Да, действительно, это хорошо задокументировано. Там много примеров. Если вы передаете неверные параметры, оболочка генерирует исключение, в котором подробно описывается, что не так. Мне потребовались некоторые методы проб и ошибок, чтобы получить правильные параметры, это не вина WinSCP, просто моя путаница между ftps и sftp. Также не забудьте скопировать WinSCP.exe в папку bin приложения; или вы можете установить Session.ExecutablePath перед вызовом Session.Open ().
Эдвард
WinSCP находится под лицензией GPL. Есть ли что-нибудь, с чем я могу работать по лицензии MIT?
Яш Сарайя
1
Сборка @YashSaraiya WinSCP .NET находится под лицензией MPL 2.0 , а не GPL.
Мартин Прикрыл
1
Ничего хорошего, winscp привязан к .exe, что неудобно для многоплатформенной разработки.
Alwyn
9

Проверьте это: http://www.tamirgal.com/home/dev.aspx?Item=sharpSsh

SharpSSH - это чистая .NET-реализация набора клиентских протоколов SSH2. Он предоставляет API для связи с серверами SSH и может быть интегрирован в любое приложение .NET.

Библиотека является портом на C # проекта JSch от JCraft Inc. и выпущена под лицензией стиля BSD.

SharpSSH позволяет читать / записывать данные и передавать файлы по каналам SSH с помощью API, аналогичного API JSch. Кроме того, он предоставляет несколько дополнительных классов-оболочек, которые предлагают еще более простую абстракцию для связи по SSH.

Страница проекта SharpSSH в исходной кузнице: http://sourceforge.net/projects/sharpssh

ГЕОЧЕТ
источник
9
классный материал, но не обновлялся с 2007 года, нужно что-то для .net 4
Johnny_D
1
Смотрите мой ответ о том, что обновляется и активно поддерживается.
Асбьёрн Ульсберг, 01
10
Я использовал эту библиотеку и не рекомендую ее. Это сработало, но это было похоже на неполный порт: некоторые функции отсутствовали в классах верхнего уровня (проверка существования файлов IIRC), и мне пришлось вызывать методы в частных полях, чтобы заставить их работать; закомментированные фрагменты кода Java, оставленные в исходном коде; классы-оболочки, названные в честь классов стандартной библиотеки Java; Идиомы Java повсюду. Вместо этого я использовал SSH.NET (как в сообщении @ asbjornu) с большим успехом.
Alex
8

Мы купили Rebex File Transfer Pack, и все в порядке. API прост, у нас нет проблем с коммуникациями, прокси-серверами и т. Д.

Но у меня нет возможности сравнить его с другим компонентом SFTP / FTPS.

TcKs
источник
Обратите внимание, что SFTP и FTPS - это разные протоколы.
Трент
6

У Bitvise есть отличный продукт под названием Tunnelier, который может связывать FTP с SFTP. Затем вы можете использовать стандартный FtpWebRequest в .NET.

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

В настоящее время я тестирую это для своих целей и обновлю свои выводы.

Обновить

Эта идея не идеальна для автоматической автоматизации, если только вы не хотите перепрыгивать через обручи, удерживая клиента подключенным как службу или что-то в этом роде, чего я добился с помощью NSSM .

Я пробовал автоматизировать CLI с различными клиентами, включая bitvise и winscp.com. Я также пробовал эти библиотеки классов .net: Winscp, SSH.NET, SharpSSH и коммерческий SFTP-клиент SecureBlackBox.

SecureBlackBox работал хорошо, но он очень тяжелый, может быть довольно дорогим в зависимости от лицензирования, и я не особо согласен с его API.

Несомненно , лучший бесплатный клиент sftp для разработки .NET - это winscp . Я написал несколько классов и методов расширения, чтобы упростить работу с ним: Winscp.Extensions

Ронни Оверби
источник
4

Я использую собственную SFTP-библиотеку Chilkat ( http://www.chilkatsoft.com/ssh-sftp-component.asp ) уже пару месяцев, и она отлично работает. Использовал его в ночное время для загрузки больших файлов и аутентификации с закрытым ключом. Единственная проблема, которая у меня была, заключалась в том, чтобы заставить 64-битную версию работать на сервере Windows 2008, мне нужно было установить vcredist_x64.exe ( http://www.microsoft.com/download/en/details.aspx?id=14632 ) на моем сервере .

Роклан
источник
2
Chilkat не является полностью управляемым кодом. Это собственная библиотека, завернутая в .NET. Когда мы включили эту библиотеку, она сломала веб-дизайнер Visual Studio, потому что VS работает в 32-битном режиме. Нам пришлось создать все эти обходные пути между dev и prod (который находится в 64-битной версии), чтобы он мог использовать правильную DLL, а не забаву. Для решения этой проблемы требуется, чтобы на целевых машинах GAC были установлены 32- и 64-разрядные библиотеки DLL: chilkatforum.com/questions/114/…
Крис Смит
0

Для полной поддержки SFTP в .NET попробуйте edtFTPnet / PRO . Это уже долгое время с поддержкой множества различных серверов SFTP.

Мы также продаем SFTP-сервер CompleteFTP для Windows, который является недорогим способом получить поддержку SFTP на вашем компьютере с Windows. Также есть FTP и FTPS.

Брюс Блэкшоу
источник
Некоторое время я использовал библиотеку edtFTPnet - работает хорошо, но документация для привязок .net невелика.
Джон Кейдж
0

Я использовал IP * Works SSH, и это здорово. Простота установки и использования. Кроме того, их поддержка на высшем уровне, когда вы сталкиваетесь с вопросами или проблемами.

Бриггс
источник