Відповіді:
У двох словах, SCP може використовуватися лише для передачі файлів, і він не інтерактивний (тобто все повинно бути вказано в командному рядку). SFTP є більш досконалим і дозволяє інтерактивним командам робити такі речі, як створення каталогів, видалення каталогів і файлів (звичайно, все з урахуванням системних дозволів) тощо.
ForceCommand internal-sftp
. Я думаю, що PermitTTY no
також перешкоджає доступу scp, але дозволяє sftp доступ, хоча я міг просто помилково ввести свій пароль кожен раз, коли я спробував. Але ці дві речі не повинні перешкоджати сплеску. Джерело: особистий досвід.
З Вікіпедії :
Порівняно з попереднім протоколом SCP, який дозволяє лише передачу файлів, протокол SFTP дозволяє здійснити ряд операцій над віддаленими файлами - він більше схожий на протокол віддаленої файлової системи. Додаткові можливості клієнта SFTP порівняно з клієнтом SCP включають відновлення перерваних переносів, списки каталогів та віддалене видалення файлів. [1] З цих причин реалізувати SFTP-клієнт GUI порівняно з клієнтом GUI SCP порівняно просто.
і
Хоча і SCP, і SFTP використовують одне і те ж шифрування SSH під час передачі файлів з однаковим загальним рівнем накладних витрат, SCP зазвичай набагато швидше, ніж SFTP при передачі файлів, особливо в мережах з високою затримкою. Це відбувається тому, що SCP реалізує більш ефективний алгоритм передачі, який не потребує очікування підтвердження пакетів. Це призводить до більш швидкої швидкості, але відбувається за рахунок неможливості перервати передачу, тому на відміну від SFTP, передача SCP не може бути скасована без припинення сеансу.
З точки зору суто командного рядка:
Інша важлива відмінність між двома командами полягає в тому, що sftp не може перенести локальний файл у віддалене місце за допомогою одного командного рядка , хоча він може отримати віддалений файл, тоді як scp може робити і те, і інше .
sftp user@host:/path/to/remote.file [/path/to/local.file]
scp user@host:/path/to/remote.file [/path/to/local.file]
scp /path/to/local.file user@host:[/path/to/remote.file]
sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'
SSH ( S ecure SH ell) - це криптографічний мережевий протокол, який дозволяє віддаленому входу та іншим мережним службам безпечно працювати в незахищеній мережі.
Відмінності: SFTP - це робота в інтерактивному режимі (сеанс), а SCP працює в неінтерактивному режимі. За допомогою SFTP ми можемо отримати доступ до віддаленої файлової системи, тобто створювати, видаляти та реєструвати файли.
Подібності: Обидва SCP ( S ecure З опіювати Р rotocol) і SFTP ( S SH F Ile Т ransfer Р rotocol) є мережевими протоколами, які підтримують управління файлами між вузлами в мережі. Обидва використовують SSH.
Більшість відмінностей двох протоколів вже було сказано в інших відповідях, а більш докладно в https://unix.stackexchange.com/q/8707/19088
Інша відмінність, згідно документації на curl , полягає в тому, що протокол SCP не дуже портативний і зазвичай працює лише між системами Unix.
До речі, curl реалізує обидва протоколи і на відміну від реалізації за замовчуванням OpenSSH SFTP-клієнта, він не інтерактивний і для SFTP, і для SCP.
І зауважте, що існує також протокол FISH , який дозволяє передавати файли через SSH без необхідності SCP або SFTP. Наскільки я знаю, FISH не дуже популярний, в даний час реалізований лише в декількох файлових менеджерах ( Midnight Commander та деякі, які базуються на KDE) та Lftp .