10 примеров команды SCP для копирование файлов/папок по ssh в Linux

10 примеров команды scp для передачи файлов по SSH в Linux

Рубрики:

Linux, Сети Linux

Метки:

, , ,

В этой статье Вы узнаете, как обеспечить безопасную передачу файлов по протоколу SSH при помощи команды scp в Linux. Каждый начинающий системный администратор должен освоить навыки работы с командной строкой (CLI — от англ. Command Line Interface). Потому что серверы под управлением Linux, как правило, лишены графического интерфейса и периферийных устройств, включая клавиатуры, мыши и мониторы. В результате основным способом взаимодействия с таким сервером остается подключение по протоколу SSH. При необходимости передачи файлов между локальным и удаленным компьютерами крайне важно соблюдать безопасность. Команда scp позволит избежать перехвата ценных данных злоумышленниками.

Содержание:

  1. Что такое scp
  2. Что такое SSH
  3. Синтаксис команды scp
  4. Примеры команды scp в Linux
    1. Выводим в командную строку подробности о работе команды scp с помощью опции -v
    2. Сохраняем время изменения, время доступа и разрешения исходного файла с помощью опции -p
    3. Увеличиваем скорость передачи файлов командой scp с помощью опции -C
    4. Выбираем свой алгоритм шифрования файлов с помощью опции -c
    5. Ограничиваем скорость копирования командой scp с помощью опции -/
    6. Указываем конкретный порт для использования командой scp с помощью опции -P
    7. Рекурсивно копируем содержимое каталога командой scp с помощью опции -r
    8. Отключаем индикатор выполнения копирования и предупреждающее / диагностические сообщения команды scp с помощью опции -q
    9. Копируем файлы командой scp через прокси-сервер
      1. Что такое прокси-сервер
      2. Настраиваем автоматическое подключение команды scp к прокси-серверу
      3. Устанавливаем corkscrew в ОС
        1. Устанавливаем corkscrew в дистрибутивах на основе Debian и Ubuntu
        2. Устанавливаем corkscrew в дистрибутивах на основе RHEL и CentOS
    10. Выбираем другой файл ssh_config с помощью опции -F
  5. Выводы

Что такое scp

Утилита scp (от англ. Secure Copy) — это инструмент командной строки UNIX-подобных операционных систем, включая ОС семейства GNU / Linux, предназначенный для копирования файлов между компьютерами. При этом scp по умолчанию использует в качестве транспорта безопасный шифрованный протокол передачи данныхSSH. Утилита scp включена в состав пакета ПО OpenSSH для многих популярных дистрибутивов.

Что такое SSH

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

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

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

 

Где:

  • source_file_name — название файла, который нужно скопировать;
  • username — имя учетной записи, созданной на целевом сервере;
  • destination_host — целевой удаленный сервер;
  • destination_folder — целевая директория, в которую нужно скопировать файл.

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

Важно: для выполнения копирования утилита запросит данные для авторизации на целевом сервере. Если вместо этого ввести логин и пароль от учетной записи на локальном компьютере — команда завершится ошибкой.

Примеры команды scp в Linux

Теперь давайте перейдем к примерам практического применения команды scp в Linux.

Выводим в командную строку подробности о работе команды scp с помощью опции -v

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

  • копирование завершено успешно и файлы появились в целевом каталоге;
  • в процессе выполнения копирования произошла ошибка.

Однако разработчики предусмотрели возможность вывода на экран отладочной информации о работе утилиты. Чтобы получать сообщения обо всех этапах работы утилиты — вводим в командную строку команду scp с опцией -v:

 

Пример вывода:

 

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

Сохраняем время изменения, время доступа и разрешения исходного файла с помощью опции -p

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

  • время изменения;
  • время доступа;
  • настройки разрешений, владельца и группы владельца файла.

Для этого вводим в командную строку команду scp с опцией -p:

 

Пример вывода:

Как видите, при этом вывод команды содержит расчетное время выполнения копирования и скорость передачи данных.

Читайте также: Как заблокировать всю рекламу на всех устройствах на уровне DNS с помощью Pi-Hole на Raspberry Pi.

Увеличиваем скорость передачи файлов командой scp с помощью опции -C

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

Давайте попробуем выяснить, насколько сильно сжатие экономит время. В качестве примера возьмем один и тот же файл размером 93 Мб. Для начала скопируем его без сжатия передаваемых данных. Для этого вводим в командную строку команду scp с опциями -pv (вывод отладочной информации и сохранение исходных атрибутов файла), но без опции -C:

 

Пример вывода:

 

В результате файл скопировался за 1661,3 секунды. Теперь попробуем повторить процедуру, воспользовавшись функцией сжатия трафика. Для этого вводим в командную строку команду scp с опциями -Cpv:

 

Пример вывода:

 

На этот раз копирование файла завершилось за 162,5 секунд — быстрее более чем в 10 раз!

Конечно же, прирост скорости передачи данных возможен только с теми файлами, которые хорошо поддаются сжатию. При этом уже сжатые данные при использовании опции -C будут передаваться с той же скоростью, что и без сжатия трафика. В качестве примеров можно привести следующие типы файлов:

  • изображения (*.jpeg, *.gif и т. п.);
  • сжатые архивы (*.rar, *.zip и т. п.);
  • образы *.iso;
  • аудио- и видеозаписи.

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

Выбираем свой алгоритм шифрования файлов с помощью опции -c

По умолчанию команда scp использует алгоритм AES-128 (от англ. Advanced Encryption Standard 128-bit) для шифрования файлов.

Однако разработчики предусмотрели возможность использования другого алгоритма — для этого вводим в командную строку команду scp с опцией -c и через пробел указываем в качестве дополнительного аргумента 3des:

 

Пример вывода:

 

В таком случае вместо алгоритма AES-128 утилита будет использовать для шифрования трафика алгоритм 3des (Triple DES — блочный шифр на основе алгоритма DES) .

Важно: не перепутайте опции -c и -C при работе с командой scp!

Читайте также: 15 полезных советов для системного администрирования Linux.

Ограничиваем скорость копирования командой scp с помощью опции -/

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

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

 

Пример вывода:

 

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

Важно: 8 бит равны 1 байту, то есть 400 кбит/с — равны 50 кбайт/с.

Указываем конкретный порт для использования командой scp с помощью опции -P

По умолчанию команда scp использует для соединения с целевым удаленным компьютером порт 22. Однако в целях обеспечения безопасности полезно указать другой порт — для этого вводим в командную строку команду scp с опцией -P и через пробел указываем в качестве дополнительного аргумента номер порта:

 

Пример вывода:

 

Важно: не перепутайте опции -p и -P при работе с командой scp!

Рекурсивно копируем содержимое каталога командой scp с помощью опции -r

Уметь безопасно копировать отдельные файлы по SSH — крайне полезный навык. Однако куда полезнее уметь скопировать целую папку со всем содержимым (файлами и подкаталогами). В этом Вам поможет возможность рекурсивного копирования — вводим в командную строку команду scp с опцией -r:

 

Пример вывода:

 

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

Отключаем индикатор выполнения копирования и предупреждающее / диагностические сообщения команды scp с помощью опции -q

Поговорим о том, как отключить выведение в командную строку индикатора выполнения копирования. А также — предотвратить вывод диагностических или предупреждающих сообщений от нее. Для этого вводим в командную строку команду scp с опцией -q:

 

Пример вывода:

 

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

Копируем файлы командой scp через прокси-сервер

Еще один интересный пример использования команды scpкопирование файлов через прокси-сервер.

Что такое прокси-сервер

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

Настраиваем автоматическое подключение команды scp к прокси-серверу

По умолчанию команда scp лишена такой функции — Вам нужно будет дополнительно указать данные для соединения с промежуточным сервером-посредником. В качестве примера предположим, что Ваш прокси-сервер имеет IP-адрес 10.0.96.6 и использует для соединения порт 8080, а также предусматривает аутентификацию пользователя.

Прежде всего, создаем файл ~/.ssh/config и добавляем в него следующую строку:

.

 

Проще всего сделать это одним из двух способов:

  • перенаправление вывода — используем команду cat > ~/.ssh/config, вводим с клавиатуры содержимое файла (ProxyCommand /usr/bin/corkscrew 10.0.96.6 8080 %h %p ~/.ssh/proxyauth) и нажимаем комбинацию клавиш Ctrl + D;
  • текстовый редактор — используем команду vim ~/.ssh/config либо nano ~/.ssh/config, вводим текст с клавиатуры, сохраняем буфер в файл и выходим.

Далее — аналогичным образом создаем файл ~/.ssh/proxyauth. И добавляем в него строку следующего вида:

 

Вместо myusername указываем Ваше имя пользователя для аутентификации на прокси-сервере, а вместо mypassword — соответствующий ему пароль.

Важно: поскольку файл ~/.ssh/proxyauth содержит данные от Вашей учетной записи — доступ к нему должен быть разрешен только для Вас.

Устанавливаем corkscrew в Вашу ОС

Также для использования прокси-сервера Вам понадобится corkscrew.

Утилита corkscrew — это программа для UNIX-подобных операционных систем, предназначенная для туннелирования SSH-соединения через прокси-сервер. Стоит отметить, что corkscrew может отсутствовать в наборе предустановленного программного обеспечения Вашей операционной системе, тогда утилиту следует установить самостоятельно.

Устанавливаем corkscrew в дистрибутивах на основе Debian и Ubuntu

В дистрибутивах на основе Debian и Ubuntu для установки corkscrew вводим в командную строку от имени суперпользователя команду apt install:

Устанавливаем corkscrew в дистрибутивах на основе RHEL и CentOS

В дистрибутивах на основе RHEL и CentOS для установки corkscrew вводим в командную строку от имени суперпользователя команду apt install:

 

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

Выбираем другой файл ssh_config с помощью опции -F

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

В таком случае гораздо удобнее поместить настройки подключения к прокси-серверу в опциональный файл ssh_config, расположенный в Вашем домашнем каталоге, и обращаться к нему только тогда, когда Вы подключены к сети компании. Для этого вводим в командную строку команду scp с опцией -F и путь к файлу /home/sedicomm-university/ssh_configв качестве дополнительного аргумента:

 

Пример вывода:

 

Работая в публичной сети или дома — просто пропустите опцию -F и путь к файлу при использовании команды scp.

Читайте также: Как настроить резервное копирование и восстановление данных по сети с использованием Clonezilla.

Выводы

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

Спасибо за время, уделенное прочтению статьи!

Если возникли вопросы — задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!

Спешите подать заявку! Группы стартуют 25 января, 26 февраля, 22 марта, 26 апреля, 24 мая, 21 июня, 26 июля, 23 августа, 20 сентября, 25 октября, 22 ноября, 20 декабря.
Что Вы получите?
  • Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
  • Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проведем вечерние онлайн-лекции на нашей платформе.
  • Согласуем с вами удобное время для практик.
  • Если хотите индивидуальный график — обсудим и реализуем.
  • Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
  • Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
А еще поможем Вам:
  • отредактировать или создать с нуля резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco, Linux LPI, кибербезопасность, DevOps / DevNet, Python, подайте заявку или получите бесплатную консультацию.

Рубрики:

Linux, Сети Linux

Метки:

, , ,

Больше похожих постов

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

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

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


Поиск по сайту
Лучшее
Популярное
Рубрики
Меню