Вступление
SCP означает протокол безопасного копирования . Это инструмент, который можно использовать для передачи файлов с локального хоста на удаленный хост, с удаленного хоста на локальный хост или между двумя удаленными хостами. В этой статье мы рассмотрим, как использовать SCP для копирования между локальными и удаленными хостами.
SCP почти исключительно запускается из командной строки с помощью
команды scp
. Он использует ssh
(Secure
Shell) для передачи данных на удаленные хосты и с них. Таким образом, он
имеет набор параметров, которые определяют параметры аутентификации,
хосты и порт, такие как SSH.
По умолчанию протокол SCP работает на порту 22
если он не отменен
параметром командной строки. Все scp
форму:
$ scp [OPTIONS] [SOURCE] [DESTINATION]
Давайте посмотрим, как SCP позволяет нам передавать файл с нашего локального компьютера на удаленный.
Передача локального файла в удаленное место назначения
Загрузка файла с нашего локального компьютера в удаленное место -
распространенный сценарий для ИТ-специалистов. С помощью scp
мы можем
сделать это с помощью такой команды:
$ scp path/to/local/file.ext [email protected] :path/to/remote/file.ext
Эта команда скопирует локальный файл file.ext
по указанному пути
(после двоеточия) на remote-host
.
user
указанный в команде, является именем пользователя . Имя пользователя должно принадлежать пользователю удаленной машины.- Предоставляемый
remote-host
- это доменное имя или IP-адрес удаленного компьютера, к которому мы пытаемся подключиться. - Затем указать , где мы хотим , чтобы скопировать файл на удаленной
машине после двоеточия (
:
).
После выполнения этой команды отобразится запрос пароля, соответствующего учетной записи пользователя удаленного хоста:
$ [email protected] 's password:
После ввода пароля файл будет скопирован.
У этой учетной записи пользователя должен быть доступ к удаленному
пути, указанному в команде. Если вы не можете использовать свои учетные
данные для удаленного входа в систему с помощью ssh
, эти учетные
данные не будут работать при использовании scp
.
Теперь, когда мы знаем, как передать удаленный файл на нашу локальную машину, давайте обсудим обратный сценарий - передачу файла с удаленного хоста на локальный.
Передача удаленного файла в локальное место назначения
Очень похожим образом мы можем скопировать файл с удаленного компьютера на наш локальный:
$ scp [email protected] :path/to/remote/file.ext path/to/local/file.ext
По сути, это работает так же, за исключением того, что удаленный пользователь, хост и путь теперь указываются перед локальным путем.
По-прежнему будет отображаться запрос для пароля, принадлежащего учетной записи удаленного хоста. Но по завершении у вас должен быть новый файл в указанной вами папке.
Давайте посмотрим на передачу файла между двумя удаленными хостами.
Передача удаленного файла в удаленное место назначения
Наконец, для передачи файла между двумя удаленными хостами используется следующий формат команды:
$ scp [email protected] :path/to/remote/file.ext [email protected] :path/to/remote/file.ext
Обратите внимание, что в этом случае необходимо указать двух удаленных пользователей. Каждый должен иметь доступ к своему соответствующему удаленному серверу. Будет представлен запрос пароля, чтобы принять учетные данные для входа для каждого пользователя.
Из всех этих вариантов копирования файлов мы видим, что команда scp
гибка в отношении того, что может быть исходным или целевым путем. Эта
универсальность делает его очень полезным для скриптов.
Мы можем передавать файлы между нашими локальными и удаленными машинами
для тестирования и обновления конфигурации сервера или приложения. Мы
можем передавать файлы между нашим основным удаленным хостом и резервным
сервером с помощью scp
. Простота и гибкость SCP сделали его
популярным среди системных администраторов.
У команды SCP также есть конфигурации для большей гибкости в том, что и как мы копируем. Давайте посмотрим, как мы можем использовать параметры командной строки, чтобы изменить его поведение.
Общие параметры командной строки SCP
У scp
есть несколько полезных опций (также известных как флаги),
которые могут изменять аспекты того, как она подключается к удаленному
хосту.
Смена порта
Как упоминалось ранее, SCP по умолчанию 22
Однако это можно изменить,
-P
флаг -P, за которым следует номер порта.
Вот как мы копируем файл в удаленное место назначения, подключающееся к
порту 44
вместо 22
:
$ scp -P 44 path/to/local/file.ext [email protected] :path/to/remote/file.ext
Время модификации / доступа
Стоит отметить разницу между -P
и -p
-p
сохраняет время
модификации файла, время доступа и режимы при передаче. Это может быть
полезно, если желательно сохранить неизменными свойства файла:
$ scp -p path/to/local/file.ext [email protected] :path/to/remote/file.ext
Копирование каталогов
-r
можно использовать для рекурсивного копирования папки и ее
содержимого вместо одного файла:
$ scp -r path/to/local/folder [email protected] :path/to/remote/folder
Это чище, чем копирование файлов из папки с помощью *
или ?
подстановочные знаки.
Подавленный режим
-q
подавляет показания индикатора выполнения и сообщений об ошибках,
чтобы ваш терминал оставался чистым:
$ scp path/to/local/file.ext [email protected] :path/to/remote/file.ext
file.ext 100% 0 0.0KB/s 00:00
$ scp -q path/to/local/file.ext [email protected] :path/to/remote/file.ext
$
Обратите внимание, что во второй команде, которую мы выполнили в этом
примере, процент передачи не отображается из-за флага -q
Файл пары ключей аутентификации
-i
может использоваться для аутентификации соединения с использованием
криптографической пары ключей, хранящейся в файле, вместо имени
пользователя и пароля. Это обычная практика для аутентификации на
удаленных облачных серверах, например, в AWS или Digital Ocean.
Вы можете указать файл пары ключей следующим образом:
$ scp -i path/to/local/keypair.pem path/to/local/file.ext [email protected] :path/to/remote/file.ext
Использование нескольких параметров SCP
Флаги также можно использовать друг с другом. Вот пример, который
реализует несколько флагов для копирования папки с удаленного хоста на
нашу локальную машину с использованием файла пары ключей для
аутентификации на порту 44
, сохраняя при этом свойства файла и
подавляя вывод:
$ scp -p -q -P 44 -i path/to/local/keypair.pem -r path/to/local/folder [email protected] :path/to/remote/folder
С этой основой вы можете использовать SCP в самых разных ситуациях!
Заключение
В этой статье мы обсудили SCP, протокол, который можно использовать для удобной передачи файлов между хостами. Мы рассмотрели передачу файлов с локального хоста на удаленный хост, с удаленного хоста на локальный хост и между двумя удаленными хостами.
Мы также коснулись нескольких важных параметров командной строки, которые могут использоваться в определенных сценариях.
об авторе
Эта статья была написана Якобом Стопаком, разработчиком программного обеспечения и консультантом, который страстно помогает другим улучшить свою жизнь с помощью кода. Джейкоб является автором Руководства по основам кодирования для разработчиков , вводной книги, в которой рассматриваются основные концепции и инструменты кодирования. Он содержит главы по базовой компьютерной архитектуре, Интернету, командной строке, HTML, CSS, JavaScript, Python, Java, базам данных / SQL, Git и многому другому.