Хотели передать файлы по сети, но столкнулись с проблемами безопасности? Просто бросить файлы в сеть и надеяться, что с ними ничего не случится — не вариант. Нужны меры защиты. Используйте протокол передачи файлов, который защитит данные от несанкционированного доступа, перехвата трафика, утечек и других угроз.
Secure Copy Protocol (SCP) — это сетевой протокол передачи файлов между разными машинами в сети. В этой статье мы подробнее разберём, как он устроен, и рассмотрим практические сценарии использования SCP для копирования файлов с удалённой машины на локальную.
- Как работает SCP?
- Передача файлов через SCP: зачем и как?
- Передача файлов через SCP
- Другие распространённые команды SCP
- Есть ли альтернативы SCP?
- Заключение
- Часто задаваемые вопросы
- Есть ли проблемы с безопасностью, о которых стоит знать при использовании SCP для копирования с удалённого сервера на локальную машину?
- Какие ошибки чаще всего возникают при использовании SCP для копирования файлов с удалённого сервера на локальный?
- Как с помощью SCP передавать файлы между удалёнными серверами?
Как работает SCP?
SCP использует SSH (Secure Shell) для передачи файлов. Что это означает на практике? SSH — это сетевой протокол для безопасного удалённого доступа к серверам. Он обеспечивает аутентификацию, шифрование и проверку целостности передаваемых данных. SCP опирается на эти механизмы безопасности и методы шифрования, предоставляемые SSH, чтобы безопасно передавать файлы по сети. Таким образом, при работе с SCP — как при копировании с удалённого сервера на локальный, так и в обратном направлении — вы можете быть уверены в подлинности и конфиденциальности своих данных.
Передача файлов через SCP: зачем и как?
SCP — удобный и гибкий инструмент для передачи файлов как с удалённого сервера на локальный, так и в обратном направлении. У него есть ряд весомых преимуществ. Например, по сравнению с другими протоколами передачи файлов, такими как FTP, SCP предлагает более надёжную защиту. Ещё одно отличие — скорость: SCP, как правило, заметно быстрее таких протоколов, как SFTP, что делает его отличным инструментом для передачи файлов между машинами на Linux.
С помощью SCP можно перемещать файлы:
- С локальной машины на удалённую
- С удалённой машины на локальную
- С одной удалённой машины на другую.
Перейдём к практике: разберём синтаксис SCP в Linux для передачи файлов. Первым делом нужно установить SSH на обоих компьютерах. Впрочем, стоит учесть, что на большинстве машин с Linux SSH уже установлен по умолчанию. Если это ваш случай, следующие шаги можно пропустить.
1. Настройка SSH
Для установки SSH выполните следующую команду:
sudo apt install openssh-client
2. Генерация ключей SSH
После этого клиентское устройство должно установить SSH-соединение. Для защищённого соединения между клиентом и сервером необходима пара ключей: приватный и публичный. Следующая команда создаёт такую пару ключей SSH:
ssh-keygen
В процессе выполнения команды вас, скорее всего, попросят задать имя для пары ключей и кодовую фразу (это необязательно). После того как пара ключей будет создана, публичный ключ нужно скопировать на сервер.
Рассмотрим общий вид команды SCP:
scp [options] [source username@IP]:/[directory/file name] [destination username@IP]:/[directory]
- [options] > Первый элемент в скобках заменяется нужными опциями команды SCP, о которых мы поговорим далее.
- [source username@IP] > Здесь указываются имя пользователя и IP-адрес локальной машины. Например: [email protected]
- [directory/file name] > Здесь указывается путь к файлу, который нужно передать.
- [destination username@IP] > Здесь указываются имя пользователя и IP-адрес принимающей машины.
- [directory] > Здесь указывается путь, по которому файл должен быть сохранён на удалённой машине.
Теперь вы знаете, как выглядит базовая команда. Разберём все полезные опции SCP:
| Параметр | Применение |
| -C |
При использовании этой опции SCP сжимает файлы во время передачи.
|
| -c <cipher> |
Эта опция позволяет указать конкретный алгоритм шифрования. Например: scp -c <aes128-ctr>.
|
| -v |
Эта опция выводит подробный журнал выполнения операции.
|
| -l <limit in kilobytes> |
Этот параметр позволяет задать ограничение максимальной пропускной способности. Например, следующая команда устанавливает скорость передачи данных на уровне 100 кб/с: scp -l 100
|
| -P |
С помощью этого параметра можно изменить SSH-порт удалённого сервера, к которому вы подключаетесь. По умолчанию SCP использует порт 22.
|
| -S <имя программы> |
Этот параметр позволяет выбрать программу для подключения.
|
| -r |
Рекурсивное копирование файла или каталога целиком.
|
Передача файлов через SCP
Итак, вы помните, что SCP поддерживает три типа передачи данных? Давайте разберём каждый из них подробно. Определимся с задачей: на рабочем столе компьютера Linux есть фотография кота. Сначала я передам её на удалённый сервер Linux. Затем скопирую обратно на локальный компьютер. И наконец, наш везучий кот переберётся между двумя удалёнными машинами.

SCP: с локальной машины на удалённый сервер
Следующая команда передаст файл с локального компьютера на удалённый сервер:
scp [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Чтобы использовать команду scp с паролем, введите пароль от удалённого сервера. После этого передача будет завершена.

SCP: копирование с удалённого сервера на локальную машину
Чтобы выполнить обратную операцию, не нужно открывать терминал удалённого сервера. В терминале локального компьютера введите следующую команду:
scp [username]@[IP address of the remote machine]:[path/to/the/file] [path/to/the/location]
Как видно, мы просто поменяли местами две части этой команды.

SCP между двумя удалёнными машинами
Теперь перенесём кота между двумя удалёнными машинами. Для этого потребуются пароли от обеих машин - убедитесь, что они у вас есть. Используйте следующую команду для передачи файла между двумя удалёнными компьютерами:
scp [username of the 1st remote machine]@[IP address of the 1st remote machine]:[path/to/the/file] [username of the 2nd remote machine]@[IP address of the 2nd remote machine]:/[path/to/location]

Другие распространённые команды SCP
Самые распространённые сценарии использования SCP - это копирование с удалённого сервера на локальный, с локального на удалённый и между двумя удалёнными хостами. Но на этом не остановимся и рассмотрим другие полезные примеры использования Linux scp.
1. Рекурсивное копирование директории целиком
Представьте, что нужно передать целый каталог со всеми файлами. Копировать их по одному было бы слишком долго. Вместо этого можно использовать рекурсивное копирование каталога с помощью scp:
scp -r [Path/to/directory] [username of the remote server]@[Ip address]:/[path/to/the/location]
Это пригодится в самых разных ситуациях:
- Развёртывание кода: при публикации кода или веб-приложений может потребоваться передать весь каталог вместе со всеми компонентами - файлами и скриптами.
- Резервное копирование и синхронизация: если нужно создать резервную копию целого каталога или синхронизировать два каталога - на локальной машине и удалённом сервере - необходимо скопировать всё содержимое рекурсивно.
- Миграция системы: при миграции системы важно перенести все данные без потерь. Использование команды SCP с параметром -r гарантирует, что ничего не будет пропущено в процессе переноса.
2. Ограничение использования полосы пропускания
Чтобы управлять скоростью передачи данных, используйте следующую команду:
scp -l <limit> [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Но зачем это делать?
В этих двух случаях вы можете использовать синтаксис Linux scp, чтобы ограничить пропускную способность:
- Перегрузка сети: Если сеть сильно загружена, ограничение пропускной способности через scp помогает распределить сетевые ресурсы равномернее. Это гарантирует, что другие задачи продолжат работать без сбоев. Особенно это важно при передаче файлов в общей сети: без ограничений ваш процесс может мешать другим пользователям.
- Фоновая передача файлов: При фоновых SCP-передачах - например, автоматических резервных копиях или процессах синхронизации - есть риск, что они исчерпают доступные сетевые ресурсы. В таких случаях ограничение пропускной способности позволяет держать потребление ресурсов под контролем.
3. Получение подробного журнала
Флаг -v в SCP выводит подробный лог о процессе передачи. Чтобы получить расширенную информацию, используйте команду ниже:
scp -v [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Вот почему эта команда полезна:
- Устранение неполадок: Этот флаг отображает ход передачи в реальном времени: размер файла, процент выполнения, а также сообщения об ошибках и предупреждения. Совокупность этих данных позволяет отслеживать процесс передачи и оперативно устранять проблемы.
4. Указание порта SSH
Синтаксис Linux scp с флагом -P позволяет изменить SSH порт. Для этого используйте следующую команду:
scp -P [port number] [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
Это может пригодиться в следующих случаях:
- Настройка файрвола: Если стандартный SSH порт заблокирован или вы хотите скрыть SSH службу от потенциальных угроз, вы можете сменить SSH порт.
Есть ли альтернативы SCP?
SCP работает быстро и надёжно. Зная нужный синтаксис Linux scp и базовые приёмы отладки, вы можете обходиться только этим инструментом. Тем не менее знать его альтернативы не помешает.
1. rsync
rsync - многофункциональный инструмент для передачи файлов с поддержкой продвинутой синхронизации, инкрементальных передач и копирования как локально, так и удалённо. Он экономит пропускную способность, передавая только различия между исходными и целевыми файлами. Ещё одно важное преимущество rsync - возможность продолжить прерванную передачу с того места, где она остановилась.
Преимущества rsync
- Эффективная синхронизация файлов и директорий.
- Поддержка дельта-алгоритма для минимизации объёма передаваемых данных.
- Возможность возобновить прерванную передачу.
Недостатки rsync
- Требует установки rsync как на исходной, так и на целевой системе.
- Настройка сложнее, а параметры команды многочисленнее, чем у scp.
2. SFTP (протокол передачи файлов SSH)
SFTP обеспечивает защищённую передачу файлов через SSH. По функциональности он близок к FTP, но работает через зашифрованное SSH соединение - как и SCP. При этом в ряде аспектов SFTP превосходит SCP. SCP не умеет выводить список содержимого директорий, создавать или удалять директории и многое другое. SFTP справляется со всеми этими задачами.
Плюсы SFTP
- Безопасная передача файлов с шифрованием.
- Возможность удалённого управления файлами.
- Широкая поддержка на большинстве систем Linux и Unix.
Минусы SFTP
- Синтаксис команд отличается от привычного FTP.
- Поддержка может быть ограничена на некоторых встраиваемых системах и устройствах.
3. FTP (протокол передачи файлов)
FTP — широко используемый стандартный протокол для передачи файлов. Работает по модели клиент-сервер и предоставляет базовые возможности для обмена файлами.
Плюсы FTP
- Широкая поддержка на различных платформах.
- Доступны привычные клиенты с командной строкой и графическим интерфейсом.
Минусы FTP
- Нет шифрования — менее безопасен по сравнению с scp и sftp.
- Для установки соединений может потребоваться дополнительная настройка брандмауэра.
- Аутентификация в открытом виде.
В целом scp — простой и надёжный инструмент для безопасной передачи файлов через SSH. Но такие альтернативы, как rsync, sftp и FTP, могут предложить дополнительные возможности и гибкость в зависимости от конкретных задач.
Как выбрать подходящий инструмент? Учитывайте безопасность, потребность в синхронизации, простоту использования и совместимость с вашими системами и протоколами. Например, если для вас важнее всего безопасность и конфиденциальность данных, FTP не подойдёт.
Заключение
SCP — быстрый и безопасный инструмент для передачи файлов между компьютерами. Вы можете использовать scp для копирования с удалённого сервера на локальный, с локального на удалённый и даже между двумя удалёнными серверами. Несмотря на то что у SCP есть альтернативы — например rsync, — он превосходит их во многом, особенно в плане безопасности и скорости. В этой статье мы разобрали SCP, его сценарии использования и альтернативы, а также подготовили шпаргалку с часто используемыми командами.
Часто задаваемые вопросы
Есть ли проблемы с безопасностью, о которых стоит знать при использовании SCP для копирования с удалённого сервера на локальную машину?
SCP — достаточно надёжный инструмент, и во время его использования можно не беспокоиться об угрозах безопасности. Тем не менее всегда рекомендуется принимать дополнительные меры защиты там, где это возможно.
Какие ошибки чаще всего возникают при использовании SCP для копирования файлов с удалённого сервера на локальный?
При копировании файлов с удалённого сервера на локальную машину через SCP пользователи нередко сталкиваются с типичными ошибками. Вот две из наиболее распространённых:
- No such file or directory: эта ошибка возникает, если указан неверный номер порта, неправильно настроены права доступа к файлу или введены некорректные данные для входа.
- Host Key Verification Failed: эта ошибка появляется, когда ключ хоста изменился после обновления сервера. Ключ хоста подтверждает, что вы уже подключались к этому серверу раньше. Если проверка не проходит — это сигнал о том, что идентификационные данные сервера изменились. Так система защищает вас от подключения к поддельному серверу.
Как с помощью SCP передавать файлы между удалёнными серверами?
Для успешной передачи файлов между системами через SCP оба компьютера должны быть доступны по SSH. Также потребуются IP-адрес и пароль удалённой машины. Дальше — просто введите нужную команду SCP:
scp [username of the 1st remote machine]@[IP address of the 1st remote machine]:[path/to/the/file] [username of the 2nd remote machine]@[IP address of the 2nd remote machine]:/[path/to/location]
После ввода команды система запросит пароль от серверов. После этого файл будет передан.