Различия между SFTP и «FTP через SSH» - PullRequest
46 голосов
/ 13 января 2009

При поиске клиента SFTP в C # SSH File Transfer Protocol (SFTP) я наткнулся на эти два подходящих проекта - один и два .

Пытаясь понять основы, я наткнулся на эту запутанную статью в Википедии . В чем разница между SFTP и FTP через SSH? Кажется, ни одна библиотека не поддерживает «FTP через SSH», если он другой.

Ответы [ 8 ]

52 голосов
/ 13 января 2009

Вот разница:

  • SFTP (протокол передачи файлов SSH) - это протокол, который обеспечивает возможности передачи файлов и управления ими. Он может работать с любым надежным потоком данных, но обычно используется с SSH
  • «FTP через SSH» использует обычный старый протокол FTP, но между клиентом и сервером расположен SSH-туннель .

Вероятно, вы не найдете библиотек для «FTP через SSH», потому что обычно туннель устанавливается с помощью команды SSH, и после настройки клиентам и серверам не нужно знать о туннеле; они просто открывают порты и передают данные так, как без туннеля.

Кстати, еще один вариант для вас может быть FTP через SSL (FTPS) , который поддерживается .NET. (См. http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.enablessl.aspx.)

37 голосов
/ 24 сентября 2009

В основном существуют следующие протоколы передачи файлов:

  • 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 ... В чем разница? " на странице Rebex )

Отказ от ответственности: я работаю на Rebex

4 голосов
/ 19 мая 2009

SFTP - это на самом деле еще один протокол, работающий по SSH - расширение SSH, если хотите. Люди склонны использовать SFTP вместо туннелирования FTP через SSH.

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

1 голос
/ 10 июля 2014
  • SFTP означает протокол передачи файлов SSH. Это не FTP через SSL и не FTP через SSH. SFTP стандартизирован в RFC 4253.
  • FTP означает протокол передачи файлов, который определен в RFC 959 и последних дополнениях. FTP очень популярен, но не защищен. Поэтому FTP по SSL был введен и называется FTPS или FTP / SSL.

Для аутентификации SFTP используйте ключи SSH, а FTPS - сертификаты X.509.

1 голос
/ 13 января 2009

SFTP - это собственный протокол. FTP через SSH использует FTP после подключения через SSH.

1 голос
/ 13 января 2009

FTP через SSH - это простой протокол FTP, проходящий через SSH. SFTP - это механизм передачи файлов, предлагаемый SSH, и это совершенно другой протокол. Я не видел никого, кто использовал FTP через SSH.

0 голосов
/ 22 июня 2010

Я использовал SharpSSH в течение многих лет, и он прекрасно работает. Несмотря на то, что в течение некоторого времени разработки не происходило, исходный код прост для понимания и работы с ним. Я без проблем настроил и заново скомпилировал его для своих собственных проектов, хотя он работает без проблем, как есть.

Если вам не нужно делать что-то необычное, вы также можете написать свою собственную оболочку .NET для клиента PuFTY PSFTP.EXE с очень минимальным кодом.

Хотя я никогда не использовал библиотеку SFTP Грега Финзера, я знаю его лично и твердо верю, что у него есть качественный продукт, если вам нужно что-то активно разработанное и надежное. Но для простых вещей я имел большой успех с бесплатными опциями, которые я упомянул.

0 голосов
/ 23 апреля 2010

Я только что создал .NET SFTP Library . Одна из вещей, которую я узнал в процессе, - это то, как FTP отличается от SFTP. Вы фактически общаетесь с сервером SSH вместо сервера FTP. Это не просто протокол, команды совершенно разные, которые вы отправляете на сервер SSH.

Вот ссылка на мою библиотеку.

...