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

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

SCP (безопасное копирование) — это утилита командной строки, которая позволяет безопасно копировать файлы и каталоги между двумя местами.

При передаче данных с помощью scp файлы и пароль шифруются, так что никто, следящий за трафиком, не получит никакой конфиденциальной информации. SCP использует протокол SSH как для аутентификации, так и для шифрования.

В этом руководстве будет показано, как использовать команду scp , с помощью практических примеров и подробных объяснений наиболее часто используемых параметров scp .

Синтаксис команды SCP

Прежде чем приступить к использованию команды scp , давайте рассмотрим ее базовый синтаксис.

Синтаксис команды scp имеет следующий вид:

 scp [ OPTION ] [ user@ ] SRC_HOST: ] file1 [ user@ ] DEST_HOST: ] file2
  • OPTIONпараметры scp , такие как шифр, конфигурация ssh, порт ssh, лимит, рекурсивное копирование и т. д.
  • « — .
  • [user@]SRC_HOST:]file1 — путь к исходному файлу. Имя пользователя на исходной машине и имя хоста (или IP-адрес) исходной машины используются, если файл расположен на удалённой машине.
  • [user@]DEST_HOST:]:file2 — путь к файлу назначения. Имя пользователя на компьютере назначения и имя хоста (или IP-адрес) компьютера назначения используются, если файл расположен на удалённом компьютере.

Локальные файлы можно указывать с помощью абсолютного или относительного пути, тогда как имена удаленных файлов должны включать спецификацию пользователя и хоста.

scp предоставляет ряд параметров, которые управляют всеми аспектами его поведения. Наиболее часто используемые параметры:

  • -P — указывает порт SSH удаленного хоста.
  • -p — сохраняет время изменения и доступа к файлу.
  • -q — Используйте эту опцию, если вы хотите отключить индикатор прогресса и сообщения, не являющиеся ошибками.
  • -C — эта опция заставляет scp сжимать данные при их отправке на целевой компьютер.
  • -r — эта опция указывает scp копировать каталоги рекурсивно.

Прежде чем начать

Команда scp использует ssh для передачи данных, поэтому для аутентификации на удаленных системах требуется ключ SSH или пароль.

Двоеточие ( : ) — это то, с помощью чего scp различает локальные и удаленные местоположения.

Чтобы иметь возможность копировать файлы, необходимо иметь как минимум права на чтение исходного файла и права на запись в целевой системе.

Будьте осторожны при копировании файлов, имеющих одинаковое имя и местоположение в обеих системах, scp заменит файлы без предупреждения.

При передаче больших файлов рекомендуется запускать команду scp внутри сеанса screen или tmux .

Копирование файлов и каталогов между двумя системами с помощью scp

С помощью scp вы можете скопировать файл или каталог:

  • Из вашей локальной системы в удаленную систему.
  • Из удаленной системы в вашу локальную систему.
  • Между двумя удаленными системами из вашей локальной системы.

Копирование локального файла на удаленную систему с помощью команды scp

Чтобы скопировать файл из локальной системы в удаленную, выполните следующую команду:

 scp file.txt remote_username@10.10.0.2:/remote/directory

Где file.txt — имя файла, который нужно скопировать, remote_username — имя пользователя на удалённом сервере, 10.10.0.2 — IP-адрес сервера. /remote/directory — это путь к каталогу, в который нужно скопировать файл. Если удалённый каталог не указан, файл будет скопирован в домашний каталог удалённого пользователя.

Вам будет предложено ввести пароль пользователя, и начнется процесс передачи.

 remote_username@10.10.0.2's password: file.txt 100% 0 0.0KB/s 00:00

Если не указывать имя файла в месте назначения, файл будет скопирован с исходным именем. Если вы хотите сохранить файл под другим именем, необходимо указать новое имя:

 scp file.txt remote_username@10.10.0.2:/remote/directory/newfilename.txt

Если SSH на удаленном хосте прослушивает порт, отличный от порта по умолчанию 22, то вы можете указать порт с помощью аргумента -P :

 scp -P 2322 file.txt remote_username@10.10.0.2:/remote/directory

Чтобы скопировать каталог и все его файлы, вызовите команду scp с флагом -r , которая рекурсивно копирует весь каталог и его содержимое:

 scp -r /local/directory remote_username@10.10.0.2:/remote/directory

При использовании подстановочных знаков, таких как * или ? для сопоставления определённых файлов или каталогов, чтобы избежать расширения оболочки, необходимо заключить путь, содержащий подстановочные знаки, в кавычки ( " " ) или одинарные кавычки ( ' ' ). В следующем примере мы копируем все файлы .txt из локального каталога Projects в каталог Projects на удалённом сервере:

 scp "~Projects/*.txt" remote_username@10.10.0.2:/home/user/Projects/

Если вы хотите сохранить метаданные файла, которые, помимо прочего, включают данные о владельце и дату создания файла, используйте опцию -p . Например, чтобы скопировать file.txt в удалённый каталог и сохранить метаданные, введите:

 scp -p file.txt remote_username@10.10.0.2:/remote/directory/

Копирование удаленного файла в локальную систему с помощью команды scp

Чтобы скопировать файл из удаленной системы в локальную, используйте удаленное расположение в качестве источника, а локальное расположение в качестве места назначения.

Например, чтобы скопировать файл с именем file.txt с удаленного сервера с IP 10.10.0.2 , выполните следующую команду:

 scp remote_username@10.10.0.2:/remote/file.txt /local/directory

Если вы не установили беспарольный вход по SSH на удаленную машину, вам будет предложено ввести пароль пользователя.

Копирование файла между двумя удаленными системами с помощью команды scp

В отличие от rsync , при использовании scp вам не нужно входить на один из серверов для передачи файлов с одной удаленной машины на другую.

Следующая команда скопирует файл /files/file.txt с удаленного хоста host1.com в каталог /files на удаленном хосте host2.com .

 scp user1@host1.com:/files/file.txt user2@host2.com:/files

Вам будет предложено ввести пароли для обеих удалённых учётных записей. Данные будут переданы напрямую с одного удалённого хоста на другой.

Чтобы направить трафик через машину, на которой выдается команда, используйте опцию -3 :

 scp -3 user1@host1.com:/files/file.txt user2@host2.com:/files

Заключение

Если вы ищете быстрый, надежный и безопасный способ копирования файлов и каталогов между вашими системами Linux, scp — это подходящий инструмент для этой работы.

Вы также можете настроить аутентификацию на основе SSH-ключа и подключаться к своим серверам Linux без ввода пароля.

Если вы регулярно подключаетесь к одним и тем же системам, вы можете упростить свой рабочий процесс, определив все свои соединения в файле конфигурации SSH .

scp -терминал

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *