Различия между SFTP и “FTP через SSH”
Вопрос
При поиске SFTP-клиента в C # SSH File Transfer Protocol (SFTP) я наткнулся на эти два подходящих проекта - один и два.
Пытаясь понять основы, я наткнулся на это сбивающее с толку Статья в Википедии.В чем разница между SFTP и FTP через SSH?Кажется, ни одна библиотека не поддерживает "FTP через SSH", если он отличается.
Решение
Вот в чем разница:
- SFTP (SSH file transfer protocol) - это протокол, который обеспечивает передачу файлов и возможности манипулирования ими.Он может работать через любой надежный поток данных, но обычно используется с SSH
- "FTP через SSH" использует обычный старый протокол FTP, но SSH - туннель размещается между клиентом и сервером.
Вероятно, вы не найдете библиотек для "FTP через SSH", потому что обычно туннель настраивается с помощью команды SSH, и после его настройки клиентам и серверам не нужно знать о туннеле;они просто открывают порты и передают данные так, как они это делали бы без туннеля.
Кстати, еще одним вариантом для вас может быть FTP через SSL (FTPS), который поддерживается .NET.(См . http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.enablessl.aspx.)
Другие советы
В принципе, существуют следующие протоколы передачи файлов:
FTP - простой старый FTP-протокол, который существует с 1970-х годов.Аббревиатура расшифровывается как "Протокол передачи файлов".Обычно он работает через TCP-порт 21.
SFTP - другой, совершенно другой протокол передачи файлов, который не имеет ничего общего с FTP.SFTP выполняется через сеанс SSH, обычно через TCP-порт 22.Она существует с конца 1990-х годов.Аббревиатура на самом деле расшифровывается как "Протокол передачи файлов SSH".
FTP через SSH - 1) возможный, но крайне редкий пример протокола FTP, туннелируемого через канал SSH 2) неправильно названный SFTP
(подробнее см. "Защищенный FTP, FTP/SSL, SFTP, FTPS, FTP, SCP...В чем разница?" страница по адресу Повторный перевод)
Отказ от ответственности:Я работаю на Ребекса
SFTP - это на самом деле еще один протокол, работающий по SSH - расширение SSH, если хотите. Люди склонны использовать SFTP вместо туннелирования FTP через SSH.
Для всесторонней поддержки SFTP в .NET попробуйте edtFTPnet / PRO . Это было давно с поддержкой множества различных SFTP-серверов.
SFTP - это собственный протокол. FTP через SSH использует FTP после подключения через SSH.
FTP через SSH - это простой протокол FTP, проходящий через SSH. SFTP - это механизм передачи файлов, предлагаемый SSH, и это совершенно другой протокол. Я не видел никого, кто использовал FTP через SSH.
- SFTP расшифровывается как SSH-протокол передачи файлов.Это не FTP через SSL и не FTP через SSH.SFTP стандартизирован в RFC 4253.
- FTP расшифровывается как протокол передачи файлов, который определен в RFC 959 и последних дополнениях.FTP очень популярен, но не защищен.Поэтому был введен FTP через SSL, и он называется FTPS или FTP / SSL.
Для аутентификации SFTP использует SSH-ключи, в то время как FTPS использует сертификаты X.509.
Я использовал SharpSSH в течение многих лет, и он прекрасно работает. Несмотря на то, что в течение некоторого времени разработки не происходило, исходный код прост для понимания и работы с ним. Я без проблем настроил и заново скомпилировал его для своих проектов, хотя он работает без проблем, как есть, без необходимости.
Если вам не нужно делать что-то необычное, вы также можете написать свою собственную оболочку .NET для клиента PuFTY PSFTP.EXE с минимальным кодом.
Хотя я никогда не использовал библиотеку SFTP Грега Финзера, я знаю его лично и твердо верю, что у него есть качественный продукт, если вам нужно что-то активно разработанное и надежное. Но что касается простых вещей, я имел большой успех с бесплатными опциями, которые я упомянул.
Я только что создал .NET SFTP-библиотеку . Одна из вещей, которую я узнал в процессе, - это то, как FTP отличается от SFTP. Вы фактически общаетесь с сервером SSH вместо сервера FTP. Это не просто протокол, команды совершенно разные, которые вы отправляете на сервер SSH. Р>
Вот ссылка на мою библиотеку. р>