Яка різниця між SCP і SFTP?


161

Зазвичай я використовую scpкоманду для передачі файлів на * nixes.

Яка різниця між SFTP та SCP? Вони обидва не працюють на SSH?

Відповіді:


98

У двох словах, SCP може використовуватися лише для передачі файлів, і він не інтерактивний (тобто все повинно бути вказано в командному рядку). SFTP є більш досконалим і дозволяє інтерактивним командам робити такі речі, як створення каталогів, видалення каталогів і файлів (звичайно, все з урахуванням системних дозволів) тощо.


34
Щодо інтерактивності: різниця, яку ви описуєте, стосується конкретних клієнтів SFTP / SCP, що реалізовані в OpenSSH. Нічого не стосується самих протоколів. Цілком можливо реалізувати інтерактивний клієнт SCP або неінтерактивний клієнт SFTP.
Мартін Прикрил

4
І ще одне: scp не працює, якщо сервер дозволяє лише доступ SFTP через лінію ForceCommand internal-sftp. Я думаю, що PermitTTY noтакож перешкоджає доступу scp, але дозволяє sftp доступ, хоча я міг просто помилково ввести свій пароль кожен раз, коли я спробував. Але ці дві речі не повинні перешкоджати сплеску. Джерело: особистий досвід.
ecube

Чи можу я припустити, що будь-який SFTP-сервер також здатний приймати передачі SCP?
gus

@gus ні, дивіться коментар ecube
Пере,

104

З Вікіпедії :

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

і

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


18
"SCP зазвичай набагато швидше, ніж SFTP при передачі файлів."
Міхей Болен

3
"Але це відбувається за рахунок неможливості перервати передачу". Це досить важливий компроміс.
аааааа

aaaaaa, "без припинення сеансу", що не є великою справою, якщо весь сеанс призначений для копіювання файлу. Якщо ви копіюєте багато файлів, клієнт також може чекати, коли копія файлу завершиться.
Віктор Сергієнко

9

З точки зору суто командного рядка:

  • scp не має інтерактивного режиму, і він не може читати командні сценарії, це означає, що все повинно бути записано в командному рядку.
  • sftp має інтерактивний режим і може читати команди з файлу.

Інша важлива відмінність між двома командами полягає в тому, що 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 реалізує обидва протоколи і на відміну від реалізації за замовчуванням OpenSSH SFTP-клієнта, він не інтерактивний і для SFTP, і для SCP.

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


2
"Ще одна відмінність, згідно з документацією на curl, полягає в тому, що протокол SCP не дуже портативний і зазвичай працює лише між системами Unix." Іронія цієї частини вашої відповіді полягає в тому, що найпопулярніший графічний інтерфейс SCP називається WinSCP, і - ви вже здогадалися - це програма Windows.
Бретт

1
@brett найпопулярніший клієнт - це, мабуть, scps OpenSSH, я б сказав, що він дуже розгорнутий. WinSCP є клієнтом SCP / SFTP / тощо, але в даний час в основному використовується як (S) FTP-клієнт: "У червні 2003 року було випущено версію 3.0, представивши підтримку альтернативи SCP, протоколу SFTP. З часом вона розвивалася від альтернативи до основного протоколу. Незважаючи на це, добре збереглася назва "WinSCP" збереглася ". (з Історії WinSCP: warscp.net/eng/docs/project_history)
Пер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.