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

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

Передача файлов с помощью команды scp в Linux (2023 г.)

Что такое команда scp в Linux

Когда дело доходит до передачи файлов по защищенной сети, команда scp может быть очень полезной. Это означает протокол безопасного копирования и передает файлы и каталоги между двумя системами через соединение SSH (Secure Shell). С ssh вы можете быть уверены в безопасности ваших файлов, поскольку по умолчанию они зашифрованы. Проще говоря, команда scp — это более безопасная версия команды cp, о которой вы можете прочитать в нашей статье о командах терминала Linux.

Как использовать команду scp: синтаксис и параметры

Прежде чем мы сможем передавать файлы через scp, давайте посмотрим на синтаксис и параметры команды прямо здесь:

scp <опция> <[email protected]_ip_address:путь/к/источнику/файлу> <[email protected]_ip_address:цель/путь>

Понимание синтаксиса:

  • Во-первых, <[email protected]_ip_address:path/to/source/file> указывает «исходную» систему, из которой вам нужно перенести файлы/каталоги.
  • Во-вторых, <[email protected]_ip_address:target/path> указывает «целевую» систему, в которую вы хотите передать файлы/каталоги.

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

  Как установить IBM Installation Manager 1.8 в Linux

OptionsDestination-PSУказывает, какой порт для подключения к хост-системе. Если опущено, то по умолчанию будет использоваться порт 22.-pСохраняет время модификации, время доступа и режимы из исходного файла при копировании в целевую систему.-rРекурсивно копирует весь каталог в целевую систему.-JИспользуется для подключения исходная система и целевая система через прокси-систему (хост перехода).-3когда используется этот флаг, он копирует файлы как в целевую систему, так и в локальную систему-4заставляет команду scp использовать только адреса IPv4.-6принудительно scp для использования только адресов IPv6.

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

Прежде чем использовать команду scp в Linux, необходимо выполнить некоторые предварительные условия как на хосте, так и на целевой системе:

  • ssh должен быть установлен
  • root-доступ или любой пользователь с привилегиями sudo

Скопируйте файлы с локального хоста на удаленную цель

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

scp @:

Если приведенный выше синтаксис может показаться сложным, пример прояснит его:

scp test.txt [email protected]:/home/remote2/Документы/

В приведенном выше примере:

  • test.txt — это имя файла, который нужно передать, и он находится в текущем каталоге локальной системы.
  • test — это имя пользователя в целевой системе.
  • 139.144.11.105 — это IP-адрес целевой системы.
  • /home/remote2/Documents/ — это место в целевой системе, где будет сохранен переданный файл.

Скопируйте файлы с удаленного хоста на локальную цель

Если вам нужно передать файл с удаленного хоста на локальный компьютер, используйте следующий синтаксис команды scp в вашей системе Linux:

scp @:

Например, допустим, вам нужно передать файл с именем test.py с удаленного сервера, на котором вы работаете, используйте эту команду:

SCP [email protected]:/home/test/test1.py ~/test1.py

В этом примере:

  • test — это имя пользователя удаленного хоста.
  • 10.10.11.113 — это IP-адрес удаленного хоста.
  • /home/test/test1.py — это путь к файлу, который нужно передать с удаленного хоста.
  • ~/test1.py — это имя файла после его передачи на локальный компьютер и сохранения в домашнем каталоге.

Передача файлов с одного удаленного хоста на другой удаленный объект

С помощью команды scp вы можете передавать файлы не только между вашей локальной системой и удаленным компьютером, но и между двумя удаленными системами. Но прежде чем вы сможете передавать файлы из одной удаленной системы в другую удаленную систему, рекомендуется сгенерировать закрытый ключ ssh и открытый ключ ssh в исходной системе и сохранить копию открытого ключа в целевой системе.

  Как играть в игры MS-Dos в Linux с DOSBox

Как правило, пользователи жалуются на ошибку «Ошибка проверки ключа хоста» при передаче файлов между двумя удаленными системами. Чтобы обойти ошибку, используйте ssh-ключ в качестве дополнительной меры. Мы объяснили, как вы можете сделать это прямо здесь:

1. Сгенерируйте пару открытый/закрытый ключ на исходном сервере с помощью этой команды:

ssh-keygen -t <алгоритм_шифрования>

2. Для алгоритмов шифрования вы можете использовать «rsa», который является наиболее часто используемым алгоритмом, или любой другой алгоритм по вашему выбору.

3. Затем вам будет предложено выбрать место для хранения ключа ssh. Вы можете сохранить его в любом месте по вашему выбору или в месте по умолчанию.

4. В качестве парольной фразы вы можете ввести любое значение по вашему выбору или оставить его пустым, нажав Enter.

5. Затем скопируйте открытый ключ на целевой сервер с помощью приведенной ниже команды. При этом вы даже можете войти в целевую систему без пароля, используя ssh.

ssh-copy-id <имя_пользователя>@

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

6. После того, как вы создали и сохранили ключ ssh на удаленном сервере, используйте этот синтаксис команды scp для обмена файлами между двумя удаленными системами под управлением Linux:

scp @: @:

Допустим, вам нужно передать файл с именем test.txt с одного удаленного хоста на другой удаленный приемник, используйте команду:

SCP [email protected]:/home/test1/test.txt [email protected]:/home/remote2/Документы/test1.txt

В этом примере:

  • remote1 — это имя пользователя на удаленном хосте-отправителе.
  • 10.10.11.113 — это IP-адрес удаленного хоста-отправителя.
  • /home/test1/test.txt — путь к отправляемому файлу
  • remote2 — это имя пользователя в целевом удаленном приемнике.
  • 10.11.27.111 — это IP-адрес цели удаленного приемника.
  • /home/remote2/Documents/test1.txt — имя и путь для сохранения файла, который будет получен.
  Как сделать Linux в стиле старой школы с OneStepBack

Перенос нескольких файлов с помощью команды scp

Передача нескольких файлов один за другим может быть утомительной задачей для всех. Вместо этого вы можете использовать приведенный ниже синтаксис для обмена файлами с помощью команды scp в Linux:

scp @:

Например. Предположим, вам нужно отправить четыре файла, включая test1.txt, test2.py, test3.sh и test4.c, на удаленный получатель, вы можете использовать следующую команду:

scp -P 22 test1.txt test2.py test3.sh test4.c [email protected]:/home/remote_1/Документы

Давайте разберемся, как работает команда в примере и что она делает:

  • -p 2222 используется для указания подключения через порт 22
  • test1.txt test2.py test3.sh test4.c — это имена файлов, которые необходимо передать.
  • remote_1 — имя пользователя принимающей системы
  • 10.10.11.113 — IP-адрес получателя.
  • /home/remote_1/Documents указывает путь для хранения полученного файла.

Вы даже можете использовать подстановочные знаки для отправки нескольких файлов с одинаковым расширением, как показано ниже:

scp <шаблон>.<расширение> <удаленный_получатель>@<удаленный_целевой_IP_адрес>:<путь_к_хранилищу_в_удаленном_назначении>

Например, если вам нужно отправить все файлы .py на удаленный сервер, используйте приведенную ниже команду scp в терминале Linux:

УПП *.py [email protected]:/дом/remote_1/

Здесь,

  • *.py означает все файлы Python
  • remote1 — это имя пользователя получателя
  • 10.10.11.113 — IP-адрес получателя.
  • /home/remote_1/ — место для хранения полученного файла

Часто задаваемые вопросы

Безопасна ли передача файлов SCP?

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

Является ли SCP более безопасным, чем SFTP?

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

Безопасная передача файлов с помощью команды scp в Linux

В какой-то момент каждому пользователю необходимо обмениваться файлами по сети. Команда scp упрощает безопасную и эффективную передачу файлов даже в сети с высокой задержкой. Конечно, знание различных опций и синтаксиса scp тоже может быть полезным. Вы также можете обратиться к нашим руководствам о том, как переименовать файл в Linux и как удалить файл в Linux, чтобы еще больше улучшить свои навыки управления файлами в ОС. Мы надеемся, что эта статья помогла вам узнать, как использовать команду scp для передачи файлов на компьютерах с Linux. Если у вас возникнут какие-либо проблемы при использовании команды, сообщите нам об этом в разделе комментариев.