Протокол безопасного копирования
Разработчик(и) | Проект OpenSSH |
---|---|
Репозиторий | github |
Написано в | С |
Операционная система | Кросс-платформенный |
Тип | Команда , протокол связи |
Веб-сайт | www |
Протокол безопасного копирования ( 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
флаг (от), в то время как режим приемника запускается с помощью -t
(к). [2] Эти флаги используются внутри и не документируются вне исходного кода SCP.
Удаленный переход в удаленный режим
[ редактировать ]Раньше при безопасном копировании между удаленными узлами клиент SCP открывал SSH-соединение с исходным хостом и запрашивал его, в свою очередь, открыть соединение SCP с пунктом назначения. (Режим удаленного доступа не поддерживал открытие двух SCP-соединений и использование исходного клиента в качестве посредника). SCP нельзя использовать для удаленного копирования из источника в пункт назначения при работе в режиме аутентификации с использованием пароля или интерактивной клавиатуры, так как это приведет к раскрытию учетных данных аутентификации сервера назначения источнику. Однако это возможно с помощью методов на основе ключей или GSSAPI , которые не требуют ввода данных пользователем. [2]
В последнее время режим «удаленный-удаленный» поддерживает маршрутизацию трафика через клиента, который инициировал передачу, даже если он является третьей стороной передачи. Таким образом, учетные данные для авторизации должны находиться только на исходном клиенте (третьей стороне). [7]
Проблемы с использованием разговорных профилей оболочки
[ редактировать ]SCP не ожидает текстового взаимодействия с оболочкой входа по SSH. Текст, передаваемый благодаря профилю SSH (например, echo "Welcome"
в .bashrc
файл) интерпретируется как сообщение об ошибке и пустая строка ( echo ""
) приводит к взаимоблокировке клиента SCP в ожидании завершения сообщения об ошибке. [2]
программа scp
[ редактировать ]Программа SCP [8] — это программный инструмент, реализующий протокол SCP в качестве сервисного демона или клиента. Это программа для безопасного копирования.
Вероятно, наиболее широко используемой программой SCP является командная строка OpenSSH. scp
программа, которая предоставляется в большинстве реализаций SSH. scp
программа является безопасным аналогом rcp
команда. scp
программа должна быть частью всех SSH-серверов, которые хотят предоставлять службу SCP, поскольку scp
также функционирует как SCP-сервер. Начиная с OpenSSH 9.0, программа была обновлена для использования нового, более безопасного протокола SFTP ; а -O
добавлена опция для использования SCP со старыми серверами, поддерживающими только SCP. [4]
Синтаксис
[ редактировать ]Обычно синтаксис scp
программа [9] похоже на синтаксис cp
(копия) :
Копирование локального файла на удаленный хост:
scp LocalSourceFile user@remotehost:directory/TargetFile
Копирование файла с удаленного хоста и рекурсивное копирование папки (с -r
переключатель) с удаленного хоста:
scp user@remotehost:directory/SourceFile LocalTargetFile scp -r user@host:directory/SourceFolder LocalTargetFolder
Обратите внимание: если удаленный хост использует порт, отличный от порта по умолчанию 22, его можно указать в команде. Например, копирование файла с хоста:
scp -P 2222 user@host:directory/SourceFile TargetFile
Другие клиенты
[ редактировать ]Поскольку протокол безопасного копирования реализует только передачу файлов, клиенты SCP с графическим интерфейсом встречаются редко, поскольку для его реализации требуются дополнительные функции ( каталогов по крайней мере, список ). Например, WinSCP по умолчанию использует протокол SFTP. [10] Даже при работе в режиме SCP такие клиенты, как WinSCP, обычно не являются чистыми клиентами SCP, поскольку им приходится использовать другие средства для реализации дополнительных функций (например, ls
команда ). [11] Это, в свою очередь, приводит к проблемам зависимости от платформы.
Более комплексные инструменты для управления файлами через SSH — это SFTP- клиенты.
Безопасность
[ редактировать ]В 2019 году уязвимость CVE - 2019-6111 [12] было объявлено об инструменте и протоколе openssh SCP, позволяющем пользователям перезаписывать произвольные файлы в целевом каталоге клиента SCP.
См. также
[ редактировать ]
Ссылки
[ редактировать ]- ^ «Команда scp для Linux и Unix» . Компьютерная надежда . Проверено 4 августа 2015 г.
- ^ Перейти обратно: а б с д Пешанец, Ян . «Как работает протокол SCP» . Блог Яна Печанца . Оракул. Архивировано из оригинала 15 февраля 2017 г. Проверено 4 августа 2015 г.
- ^ «ОпенСШ 8.0» . Примечания к выпуску OpenSSH . 17 апреля 2019 г.
- ^ Перейти обратно: а б «ОпенСШ 9.0» . Примечания к выпуску OpenSSH . 8 апреля 2022 г.
- ^ «scp(1) — страницы руководства OpenBSD (раздел истории)» . Проверено 25 июня 2012 г.
- ^ «SCP — протокол безопасного копирования — что это такое, полное определение и примеры команд!» . Загрузки для ПК и сети — PCWDLD.com . 29 июня 2019 г. Проверено 22 мая 2020 г.
- ^ Кэрролл, Брэндон (16 августа 2017 г.). «Как использовать Secure Copy для передачи файлов» . Техреспублика . Проверено 22 мая 2020 г.
- ^ «Портативный OpenSSH» . Гитхаб . 13 мая 2022 г.
- ^ «scp(1) — страницы руководства OpenBSD» https://man.openbsd.org/scp
- ^ «Поддерживаемые протоколы передачи файлов::WinSCP» . winscp.net . Проверено 22 мая 2020 г.
- ^ «Страница SCP/Shell (диалоговое окно «Дополнительные настройки сайта») :: WinSCP» . winscp.net . Проверено 22 мая 2020 г.
- ^ «ПНВ-Cve-2019-6111» .