В чем разница между SCP и SFTP?


162

Обычно я использую scpкоманду для передачи файлов на * nixes.

В чем разница между SFTP и SCP? Разве они оба не работают по SSH?

Ответы:


98

Короче говоря, SCP может использоваться только для передачи файлов, и он не является интерактивным (т. Е. Все должно быть указано в командной строке). SFTP более сложный и позволяет интерактивным командам выполнять такие действия, как создание каталогов, удаление каталогов и файлов (конечно, с учетом системных разрешений) и т. Д.


34
Относительно интерактивности: Различие, которое вы описываете, касается конкретных клиентов SFTP / SCP, реализованных в OpenSSH. Это ничего не касается самих протоколов. Вполне возможно реализовать интерактивный SCP-клиент или неинтерактивный SFTP-клиент.
Мартин Прикрыл

4
Еще одна вещь: scp не работает, если сервер только разрешает доступ SFTP через линию ForceCommand internal-sftp. Я думаю, что PermitTTY noтакже запрещает доступ по scp, но разрешает доступ по sftp, хотя я мог просто набирать пароль каждый раз, когда пытался. Но эти две вещи не должны мешать sftp. Источник: личный опыт.
Ecube

Могу ли я предположить, что любой SFTP-сервер также способен принимать передачи SCP?
Гас

@ gus нет, см. комментарий ecube
Pere

104

Из Википедии :

По сравнению с более ранним протоколом SCP, который допускает только передачу файлов, протокол SFTP позволяет выполнять ряд операций с удаленными файлами - он больше похож на протокол удаленной файловой системы. Дополнительные возможности клиента SFTP по сравнению с клиентом SCP включают возобновление прерванных передач, списки каталогов и удаленное удаление файлов. [1] По этим причинам относительно просто реализовать клиент SFTP с графическим интерфейсом по сравнению с клиентом SCP с графическим интерфейсом.

а также

Хотя и SCP, и SFTP используют одинаковое шифрование SSH во время передачи файлов с одинаковым общим уровнем служебных данных, SCP обычно намного быстрее, чем SFTP при передаче файлов, особенно в сетях с высокой задержкой. Это происходит потому, что SCP реализует более эффективный алгоритм передачи, который не требует ожидания подтверждения пакета. Это приводит к более высокой скорости, но происходит за счет невозможности прервать передачу, поэтому, в отличие от SFTP, передача SCP не может быть отменена без завершения сеанса.


18
«SCP обычно намного быстрее, чем SFTP при передаче файлов».
Мика Болен

3
«Но происходит за счет невозможности прервать перевод». Это довольно важный компромисс.
аааааа

а-а-а-а-а, "без завершения сеанса", что не имеет большого значения, если весь сеанс предназначен для копирования файла. Если вы копируете много файлов, клиент также может дождаться завершения копирования отдельного файла.
Виктор Сергиенко

9

С точки зрения командной строки:

  • scp не имеет интерактивного режима и не может читать командные сценарии, это означает, что все должно быть записано в командной строке.
  • sftp имеет интерактивный режим и может читать команды из файла.

Другое важное различие между этими 2 командами заключается в том, что sftp не может поместить локальный файл в удаленное местоположение с помощью одной командной строки , хотя он может получить удаленный файл, в то время как scp может сделать и то, и другое .

Sftp получить удаленный файл

sftp user@host:/path/to/remote.file [/path/to/local.file]

scp получить удаленный файл

scp user@host:/path/to/remote.file [/path/to/local.file]

scp положил удаленный файл

scp /path/to/local.file user@host:[/path/to/remote.file]

2
sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'
Выкладываю

3

SSH ( S ecure SH ell) - это криптографический сетевой протокол, позволяющий удаленному входу в систему и другим сетевым службам безопасно работать в незащищенной сети.

Отличия: SFTP работает в интерактивном режиме (сеанс), а SCP работает в неинтерактивном. Используя SFTP, мы можем получить доступ к удаленной файловой системе, т. Е. Создавать, удалять и просматривать файлы.

Сходства: Оба SCP ( S ecure С опировать Р rotocol) и SFTP ( S SH F Ile Т ransfer Р rotocol) являются сетевыми протоколами, которые поддерживают управление файлами между узлами в сети. Оба используют SSH.

Больше


2

Большинство различий между этими двумя протоколами уже было сказано в других ответах, и более подробно в https://unix.stackexchange.com/q/8707/19088

Другое отличие, согласно документации curl , заключается в том, что протокол SCP не очень переносим и обычно работает только между системами Unix.

Кстати, curl реализует оба протокола и, в отличие от реализации SFTP-клиента OpenSSH по умолчанию, не является интерактивным как для SFTP, так и для SCP.

И обратите внимание, что существует также протокол FISH , который позволяет передавать файлы через SSH без необходимости использования SCP или SFTP. Насколько я знаю, FISH не очень популярен, в настоящее время он реализован всего в нескольких файловых менеджерах ( Midnight Commander и некоторые на основе KDE) и Lftp .


2
«Другое отличие, согласно документации curl, заключается в том, что протокол SCP не очень переносим и обычно работает только между системами Unix». Ирония этой части вашего ответа в том, что самый популярный графический интерфейс SCP называется WinSCP, и, как вы уже догадались, это программа Windows.
Бретт

1
@brett самый популярный клиент - это, вероятно, scsp OpenSSH, я бы сказал, что он широко развернут. WinSCP является клиентом SCP / SFTP / etc, но в настоящее время в основном используется как (S) FTP-клиент: «В июне 2003 года была выпущена версия 3.0, в которой появилась поддержка альтернативы SCP, протоколу SFTP. Со временем он превратился из альтернативы. к основному протоколу. Несмотря на это, хорошо зарекомендовавшее себя название «WinSCP» было сохранено ». (из истории WinSCP: winscp.net/eng/docs/project_history)
Перо
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.