Использование SCP для копирования и безопасной передачи файлов и папок

Введение SCP означает протокол безопасного копирования. Это инструмент, который можно использовать для передачи файлов с локального хоста на удаленный хост, с удаленного хоста на локальный хост или между двумя удаленными хостами. В этой статье мы рассмотрим, как использовать SCP для копирования между локальными и удаленными хостами. SCP почти исключительно запускается из командной строки с помощью команды scp. Он использует ssh [https://www.ssh.com/ssh/] (Secure Shell) для передачи данных на удаленные узлы и с них. Таким образом, у него есть набор опций,

Вступление

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 и многому другому.

comments powered by Disqus