2009-02-09 6 views
86

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

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

+0

Возможный дубликат [Как загрузить файл на SFTP-сервер в C#/.NET?] (Http://stackoverflow.com/questions/86458/how-do-upload-a-file-to -an-sftp-server-in-c-sharp-net) –

+0

Есть ли библиотека SFTP, лицензированная под MIT? –

ответ

6

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

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

+1

Я согласен с этим утверждением. +1 – Pat

+0

Обратите внимание, что SFTP и FTPS - это не тот же протокол. – Trent

10

Проверьте это: 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

+7

классный материал, но не обновлялся с 2007 года, нужен smth для .net 4 –

+1

См. Мой ответ на то, что обновляется и активно поддерживается. –

+9

Я использовал эту библиотеку и не рекомендую ее. Он работал, но он чувствовал себя как неполный порт: некоторые функции отсутствовали в классах верхнего уровня (проверяя, существуют ли файлы IIRC), и мне приходилось вызывать методы на частных полях, чтобы заставить их работать; закомментированные фрагменты кода Java остались в источнике; классы-оболочки, названные по имени в стандартной библиотеке Java; Java-идиомы повсюду. Я использовал SSH.NET вместо (как в сообщении @ asbjornu) с большим успехом. – Alex

0

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

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

+0

Я использовал библиотеку edtFTPnet в течение некоторого времени - работает хорошо, но документация для привязок .net невелика. –

43

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

Обновление: с v.5.0, WinSCP имеет a .NET wrapper library для уровня скриптинга WinSCP.

+1

Выглядит неплохо для меня: http://winscp.net/rus/docs/library#example –

+3

Я успешно использовал сборку WinSCP .NET (winscpnet.dll), оболочку на скриптинговом интерфейсе WinSCP. Да, действительно, это хорошо документировано. В нем много примеров. Если вы передаете неверные параметры, обертка генерирует исключение, детализируя, что не так. Мне потребовались некоторые пробные версии и ошибки, чтобы получить правильные параметры, без вины WinSCP, просто мое замешательство между ftps и sftp. Кроме того, не забудьте скопировать WinSCP.exe в папку bin приложения; или вы можете установить Session.ExecutablePath перед вызовом Session.Open(). – Edward

+0

WinSCP лицензируется под лицензией GPL. Есть ли что-нибудь, что я могу работать с лицензией в рамках MIT? –

0

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

3

Я использую собственную библиотеку 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) на моем сервере.

+0

Chilkat - это не 100% управляемый код. Его родная библиотека завершена в .NET. Когда мы включили эту библиотеку, она сломала веб-дизайнер визуальной студии, потому что VS работает в 32-битном режиме.Нам пришлось создавать все эти работы вокруг dev и prod (который находится в 64-разрядной версии), поэтому он может использовать нужную DLL, а не забаву. Для работы требуется, чтобы GAC установил 32 и 64-битную DLL на целевые машины: http://www.chilkatforum.com/questions/114/64bit-could-not-load-file-or-assembly-chilkatdotnet4 или -one-of-its-dependencies-a-try-was-made-to-load-a-program-with-an-correct-format –

5

У 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

69

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

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

+5

Я также использовал SSH.NET (http: //sshnet.codeplex. com /) и нашел, что он отличный. – Alex

+7

Я обнаружил, что SSH.NET не работает с самого начала. Проверка файла/dir всегда возвращает true. Многие открытые и рассмотренные проблемы в списке проблем отвлекли меня от проекта. –

+1

@RonnieOverby Я искал проблему, о которой вы говорили о файле/dir, и проблема больше не существует. Я написал код для тестирования SSH.NET и работает так, как ожидалось. – Colin