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

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

Команда scp в Linux – один из таких инструментов, который помогает пользователю обмениваться файлами удаленно между локальными и удаленными хостами. В этой статье мы подробно обсудим команду scp, а также ее использование и некоторые дополнительные функции команды.

Что такое команда Scp

Scp, аббревиатура от Secure Copy , представляет собой служебную программу командной строки в операционных системах на базе Linux, которая позволяет пользователю копировать файлы между удаленными и локальными узлами. Поскольку команда передает файлы по сети на другой хост, требуется доступ по SSH. SSH (Secure Shell) – это протокол, который позволяет безопасно обрабатывать сетевые службы в любой сети.

Команда scp также поддерживает некоторые дополнительные функции, такие как указание параметров аутентификации, изменение порта, перенос каталогов и многое другое.

Почему Scp лучше, чем другие методы

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

Другие методы передачи, такие как Telnet или FTP, не имеют шифрования. Кроме того, пара ключей пользователь / пароль также сохраняется в виде обычного текста, что вообще не является хорошей практикой. Взломщик может легко получить доступ к вашей информации, обнюхивая вашу сеть.

Как безопасно передавать файлы с помощью Scp

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

  1. Локальный хост и удаленный хост
  2. Удаленный хост и локальная система
  3. Два удаленных хоста

Базовый синтаксис

Базовый синтаксис команды scp:

 scp [options] [source] [destination]

Перенос с локального хоста на удаленную систему

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

 scp /home/document.txt user@remote-host:/home/document.txt

Обратите внимание, что источником является путь к файлу в вашем локальном хранилище. А место назначения – это путь к файлу на удаленном хосте. Вы также должны указать имя пользователя и доменное имя удаленного сервера. В приведенной выше команде пользователь – это имя пользователя, а удаленный хост – это доменное имя.

Путь назначения отделяется от сведений об удаленном хосте с помощью символа двоеточия ( ? . Имейте в виду, что пользователь должен существовать на удаленном сервере, если вы хотите успешно передать файлы. Кроме того, у пользователя должны быть права на запись в каталог, в котором вы хотите сохранить файл.

После выполнения вышеупомянутой команды система запросит у вас пароль удаленного пользователя. Введите пароль и нажмите Enter .

 user@remote-host's password:

Если пароль действителен, передача файлов будет инициализирована. Если вы ввели неверный пароль, произойдет ошибка.

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

От удаленного хоста к локальному

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

 scp user@remote-host:/home/document.txt /home/document.txt

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

Между двумя удаленными хостами

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

 scp user1@remote-host1:/home/document.txt user2@remote-host2:/home/folder/document.txt

И снова появится запрос с просьбой ввести пароль для каждого из двух пользователей.

Параметры командной строки Scp

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

Изменить порт

По умолчанию команда scp работает с портом 22. Однако вы всегда можете перезаписать конфигурацию по умолчанию и изменить порт. Флаг -P позволяет сделать то же самое.

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

 scp -P 35 /home/document.txt user@remote-host:/home/document.txt

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

Сохранить отметки времени файла

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

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

 scp -p /home/document.txt user@remote-host:/home/remote/document.txt

Копировать каталоги

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

 scp -r user@remote-host:/home/videos /home/videos

Подавленный режим

Когда вы вводите команду scp для передачи файлов, терминал отображает на экране индикатор выполнения и другую связанную информацию. Однако вы можете не просматривать эту информацию, используя флаг -q .

 scp -q user@remote-host:/home/document.txt /home/document.txt

Используйте файл пары ключей для аутентификации

Если вы хотите аутентифицировать соединение с удаленным хостом с помощью файла пары ключей, укажите путь к файлу с помощью флага -i .

 scp -i /home/keypair.pem /home/document.txt user@remote-host:/home/document.txt

Объединение нескольких флагов вместе

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

Например, чтобы изменить порт и передать файлы в подавленном режиме:

 scp -P 34 -q user@remote-host:/home/document.txt home/document.txt

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

 scp -i /home/secret/keypair.pem -r /home/folder user@remote-host:/home/folder

Передача файлов между системами Linux

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

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