Протокол безопасного копирования

Сетевой протокол для копирования файлов между компьютерами
scp
Разработчик(и)Проект OpenSSH
Репозиторийgithub.com/openssh/openssh-portable/
Написано вС
Операционная системаКроссплатформенный
ТипКоманда , Протокол связи
Веб-сайтwww.openssh.com

Протокол безопасного копирования ( SCP ) — это средство безопасной передачи файлов компьютера между локальным хостом и удаленным хостом или между двумя удаленными хостами. Он основан на протоколе Secure Shell (SSH). [1] «SCP» обычно относится как к протоколу безопасного копирования, так и к самой программе. [2]

По словам разработчиков OpenSSH в апреле 2019 года, SCP устарел, негибок и не поддается исправлению; они рекомендуют использовать более современные протоколы, такие как SFTP и rsync, для передачи файлов. [3] Поэтому , начиная с версии OpenSSH 9.0, scpклиент по умолчанию использует SFTP для передачи файлов вместо устаревшего протокола SCP/RCP. [4]

Протокол безопасного копирования

SCP это сетевой протокол , основанный на протоколе BSD RCP , [5] , который поддерживает передачу файлов между хостами в сети. SCP использует Secure Shell (SSH) для передачи данных и использует те же механизмы для аутентификации, тем самым гарантируя подлинность и конфиденциальность передаваемых данных . Клиент может отправлять (загружать) файлы на сервер, опционально включая их основные атрибуты (разрешения, временные метки). Клиенты также могут запрашивать файлы или каталоги с сервера (загружать). SCP по умолчанию работает через порт TCP 22. [6] Как и RCP, не существует RFC , определяющего специфику протокола.

Функция

Обычно клиент инициирует SSH-подключение к удаленному хосту и запрашивает запуск SCP-процесса на удаленном сервере. Удаленный SCP-процесс может работать в одном из двух режимов:

  • исходный режим, который считывает файлы (обычно с диска) и отправляет их обратно клиенту, или
  • режим приемника, который принимает файлы, отправленные клиентом, и записывает их (обычно на диск) на удаленном хосте.

Для большинства клиентов SCP режим источника обычно запускается с помощью -fфлага (from), а режим приемника — с помощью -t(to). [2] Эти флаги используются внутри и не документируются за пределами исходного кода SCP.

Удаленный режим в удаленный режим

В прошлом, при безопасном копировании с удаленного на удаленный, клиент SCP открывает SSH-соединение с исходным хостом и запрашивает, чтобы он, в свою очередь, открыл SCP-соединение с местом назначения. (Режим «с удаленного на удаленный» не поддерживал открытие двух SCP-соединений и использование исходного клиента в качестве посредника). SCP нельзя использовать для удаленного копирования из источника в место назначения при работе в режиме аутентификации с паролем или интерактивной клавиатурой, так как это раскрыло бы источнику учетные данные аутентификации сервера назначения. Однако это возможно с помощью методов на основе ключей или GSSAPI , которые не требуют ввода данных пользователем. [2]

В последнее время режим «удаленный-удаленный» поддерживает маршрутизацию трафика через клиента, который инициировал передачу, даже если он является третьей стороной передачи. Таким образом, учетные данные авторизации должны находиться только у исходного клиента, третьей стороны. [7]

Проблемы с использованием разговорчивых профилей оболочки

SCP не ожидает текст, сообщающийся с оболочкой входа SSH. Текст, переданный из-за профиля SSH (например, echo "Welcome"в .bashrcфайле), интерпретируется как сообщение об ошибке, а пустая строка ( echo "") приводит к тому, что клиент SCP блокируется в ожидании завершения сообщения об ошибке. [2]

программа scp

Программа SCP [8] — это программный инструмент, реализующий протокол SCP как служебный демон или клиент. Это программа для выполнения безопасного копирования.

Возможно, наиболее широко используемой программой SCP является программа командной строки scp OpenSSH , которая предоставляется в большинстве реализаций SSH. scpПрограмма является безопасным аналогом команды rcp. scpПрограмма должна быть частью всех серверов SSH, которые хотят предоставлять службу SCP, так как она scpтакже функционирует как сервер SCP. Начиная с OpenSSH 9.0, программа была обновлена ​​для использования более нового, более безопасного протокола SFTP ; -Oдобавлена ​​опция для использования SCP со старыми серверами только SCP. [4]

Синтаксис

Обычно синтаксис scpпрограммы [9] похож на синтаксис cp(копировать) :

Копирование локального файла на удаленный хост:

scp LocalSourceFile  пользователь @ remotehost : каталог / TargetFile

Копирование файла с удаленного хоста и рекурсивное копирование папки (с -rпереключателем) с удаленного хоста:

scp пользователь @ remotehost : каталог / ИсходныйФайл  ЛокальныйЦелевойФайл
scp -r пользователь @ host : каталог / ИсходнаяПапка  ЛокальнаяЦелеваяПапка

Обратите внимание, что если удаленный хост использует порт, отличный от порта по умолчанию 22, его можно указать в команде. Например, копирование файла с хоста:

scp -P 2222 пользователь @ хост : каталог / ИсходныйФайл  ЦелевойФайл

Другие клиенты

Поскольку протокол Secure Copy Protocol реализует только передачу файлов, клиенты GUI SCP редки, так как для его реализации требуется дополнительная функциональность ( как минимум, листинг каталогов ). Например, WinSCP по умолчанию использует протокол SFTP. [10] Даже при работе в режиме SCP такие клиенты, как WinSCP, обычно не являются чистыми клиентами SCP, так как они должны использовать другие средства для реализации дополнительной функциональности (например, lsкоманду ). [11] Это, в свою очередь, приводит к проблемам зависимости от платформы.

Более совершенными инструментами для управления файлами по SSH являются SFTP- клиенты.

Безопасность

В 2019 году была объявлена ​​уязвимость CVE - 2019-6111 [12] , связанная с инструментом и протоколом SCP openssh , позволяющая пользователям перезаписывать произвольные файлы в целевом каталоге клиента SCP.

Смотрите также

Ссылки

  1. ^ "Linux and Unix scp command". Computer Hope . Получено 4 августа 2015 г.
  2. ^ abcd Pechanec, Jan. "How the SCP protocol works". Веблог Яна Печанеца . Oracle. Архивировано из оригинала 2017-02-15 . Получено 4 августа 2015 г.
  3. ^ "OpenSSH 8.0". Заметки о выпуске OpenSSH . 17 апреля 2019 г.
  4. ^ ab "OpenSSH 9.0". Заметки о выпуске OpenSSH . 8 апреля 2022 г.
  5. ^ "scp(1) - Страницы руководства OpenBSD (исторический раздел)" . Получено 25 июня 2012 г. .
  6. ^ "SCP - Secure Copy Protocol - Что это такое, Полное определение и Примеры команд!". Загрузки для ПК и сетей - PCWDLD.com . 2019-06-29 . Получено 2020-05-22 .
  7. ^ Кэрролл, Брэндон (16 августа 2017 г.). «Как использовать Secure Copy для передачи файлов». TechRepublic . Получено 22.05.2020 .
  8. ^ "Portable OpenSSH". GitHub . 13 мая 2022 г.
  9. ^ "scp(1) - Страницы руководства OpenBSD" https://man.openbsd.org/scp
  10. ^ "Поддерживаемые протоколы передачи файлов :: WinSCP". winscp.net . Получено 2020-05-22 .
  11. ^ "Страница SCP/Shell (диалоговое окно дополнительных параметров сайта) :: WinSCP". winscp.net . Получено 22.05.2020 .
  12. ^ "ПНВ - Cve-2019-6111".
Retrieved from "https://en.wikipedia.org/w/index.php?title=Secure_copy_protocol&oldid=1234040499"