Протокол безопасного копирования ( SCP ) - это средство безопасной передачи компьютерных файлов между локальным хостом и удаленным хостом или между двумя удаленными хостами. Он основан на протоколе Secure Shell (SSH). [1] «SCP» обычно относится как к протоколу защищенного копирования, так и к самой программе. [2] Согласно заявлению разработчиков OpenSSH в апреле 2019 года, SCP устарела, негибка и нелегко исправить; они рекомендуют использовать для передачи файлов более современные протоколы, такие как sftp и rsync . [3]
Разработчики) | Проект OpenSSH |
---|---|
Репозиторий | github |
Написано в | C |
Операционная система | Кроссплатформенность |
Тип | Командование |
Веб-сайт | www |
Протокол безопасного копирования
SCP является сетевым протоколом , основанный на BSD RCP протокола, [4] , который поддерживает передачу файлов между узлами в сети. SCP использует Secure Shell (SSH) для передачи данных и использует те же механизмы аутентификации, обеспечивая тем самым достоверность и конфиденциальность из данных в пути . Клиент может отправлять (загружать) файлы на сервер, при желании включая их основные атрибуты (разрешения, временные метки). Клиенты также могут запрашивать файлы или каталоги с сервера (загрузка). По умолчанию SCP работает через TCP-порт 22. [5] Как и RCP, не существует RFC , определяющего особенности протокола.
Функция
Обычно клиент инициирует SSH-соединение с удаленным хостом и запрашивает запуск процесса SCP на удаленном сервере. Удаленный процесс SCP может работать в одном из двух режимов:
- исходный режим, который читает файлы (обычно с диска) и отправляет их обратно клиенту, или
- режим приемника, который принимает файлы, отправленные клиентом, и записывает их (обычно на диск) на удаленном хосте.
Для большинства клиентов SCP режим источника обычно запускается с помощью -fфлага (from), а режим приемника запускается с помощью -t(to). [2] Эти флаги используются внутри организации и не документируются вне исходного кода SCP.
Удаленный в удаленный режим
Раньше при защищенной копии «удаленный-удаленный» клиент SCP открывал SSH-соединение с исходным хостом и запрашивал, чтобы он, в свою очередь, открывал соединение SCP с адресатом. (Режим удаленного доступа не поддерживает открытие двух соединений SCP и использование исходного клиента в качестве посредника). Важно отметить, что SCP не может использоваться для удаленного копирования из источника в место назначения при работе в режиме аутентификации с паролем или с интерактивной клавиатурой, так как при этом исходные данные аутентификации сервера назначения будут открыты источнику. Однако это возможно с помощью методов на основе ключей или GSSAPI, которые не требуют ввода данных пользователем. [2]
В последнее время режим удаленного доступа поддерживает маршрутизацию трафика через клиента, инициировавшего передачу, даже если он является третьей стороной для передачи. Таким образом, учетные данные для авторизации должны находиться только на исходном клиенте, третьей стороне. [6]
Проблемы с использованием разговорчивых профилей оболочки
SCP не ожидает обмена текстом с оболочкой входа в систему ssh. Текст, передаваемый из-за профиля ssh (например, эхо «Добро пожаловать» в файле .bashrc) интерпретируется как сообщение об ошибке, а пустая строка (эхо «») заставляет scp зайти в тупик, ожидая завершения сообщения об ошибке. [2]
Secure Copy (программа удаленного копирования файлов)
Программа SCP [7] представляет собой программный инструмент, реализующий протокол SCP в качестве сервисного демона или клиента. Это программа для безопасного копирования.
Возможно, наиболее широко используемой программой SCP является программа командной строки OpenSSH scp, которая предоставляется в большинстве реализаций SSH. scpПрограмма является безопасным аналогом rcpкоманды. scpПрограмма должна быть частью всех серверов SSH , которые хотят , чтобы обеспечить SCP службы, а scpфункции , как SCP - сервер тоже.
Некоторые реализации SSH предоставляют scp2программу, которая использует протокол SFTP вместо SCP, но предоставляет тот же интерфейс командной строки, что и scp. scpв таком случае обычно является символической ссылкой на scp2.
Синтаксис
Обычно синтаксис scpпрограммы [8] подобен синтаксису cp(копия) :
Копирование локального файла на удаленный хост:
scp LocalSourceFile user@remotehost:directory/TargetFile
Копирование файла с удаленного хоста и копирование папки с удаленного хоста (с ключом -r):
scp user@remotehost:directory/SourceFile LocalTargetFilescp -r user@host:directory/SourceFolder LocalTargetFolder
Обратите внимание: если удаленный хост использует порт, отличный от значения по умолчанию 22, его можно указать в команде. Например, копирование файла с хоста:
scp -P 2222 user@host:directory/SourceFile TargetFile
Другие клиенты
Поскольку протокол безопасного копирования реализует только передачу файлов, клиенты SCP с графическим интерфейсом пользователя встречаются редко, поскольку для его реализации требуются дополнительные функции ( по крайней мере, список каталогов ). Например, WinSCP по умолчанию использует протокол SFTP. [9] Даже при работе в режиме SCP такие клиенты, как WinSCP, обычно не являются чистыми клиентами SCP, поскольку они должны использовать другие средства для реализации дополнительных функций (например, lsкоманды ). [10] Это, в свою очередь, приводит к проблемам с зависимостью от платформы.
Более комплексные инструменты для управления файлами через SSH - это клиенты SFTP .
Безопасность
В 2019 году была анонсирована уязвимость CVE - 2019-6111 [11], связанная с инструментом и протоколом openssh SCP, позволяющим пользователям перезаписывать произвольные файлы в целевом каталоге клиента SCP.
Смотрите также
- Протокол передачи файлов SSH (SFTP)
- Удаленная копия (rcp)
- Сравнение протоколов передачи файлов
- Файлы, передаваемые по протоколу оболочки (FISH)
- FTP через SSH
- FTPS
- rsync
- Безопасная оболочка
- WinSCP
Рекомендации
- ^ "Команда scp Linux и Unix" . Компьютерная надежда . Дата обращения 4 августа 2015 .
- ^ а б в г Печанец, Ян . «Как работает протокол SCP» . Блог Яна Печанца . Oracle. Архивировано из оригинала на 2017-02-15 . Дата обращения 4 августа 2015 .
- ^ «OpenSSH 8.0» . Примечания к выпуску OpenSSH . 17 апреля 2019.
- ^ «scp (1) - страницы справочника OpenBSD (раздел истории)» . Проверено 25 июня 2012 года .
- ^ Защищено, Copyright PCWDLD com © 2020 Все права; Нас, контакты; Политика конфиденциальности; Реклама; Использование, Условия; Заявление об отказе от ответственности; друзья, Info &; PCWDLD.com, О компании; Информационные бюллетени, подпишитесь на нашу (2019-06-29). «SCP - Протокол безопасного копирования - что это такое, полное определение и примеры команд!» . Загрузки для ПК и сети - PCWDLD.com . Проверено 22 мая 2020 .
- ^ Br; 16 августа о Кэрролле в телеканале "Нетворкинг"; 2017; Пст, 9:34. «Как использовать Secure Copy для передачи файлов» . TechRepublic . Проверено 22 мая 2020 .CS1 maint: числовые имена: список авторов ( ссылка )
- ^ https://github.com/openssh/openssh-portable/blob/master/scp.c
- ^ "scp (1) - страницы руководства OpenBSD" https://man.openbsd.org/scp
- ^ «Поддерживаемые протоколы передачи файлов :: WinSCP» . winscp.net . Проверено 22 мая 2020 .
- ^ «Страница SCP / Shell (диалог дополнительных настроек сайта) :: WinSCP» . winscp.net . Проверено 22 мая 2020 .
- ^ https://nvd.nist.gov/vuln/detail/CVE-2019-6111