- Передача файлов в Linux с помощью SCP
- Базовый синтаксис
- Сохранение значений атрибутов
- Сжатие файлов при передаче
- Выбор алгоритма шифрования
- Ограничение скорости передачи
- Рекурсивное копирование каталогов
- Отключение отображения прогресса и служебных сообщений
- Копирование файлов через прокси
- Выбор другого файла конфигурации
- Заключение
- SCP Команда Linux для Удалённого Копирования Файлов
- Синтаксис Примера SCP Команды
- SCP Команда: На Что Обратить Внимание
- SCP Команда и Копирование Файлов
- Локальный Файл в Удалённое Местоположение
- Удалённый Файл на Локальную Машину
- Удалённый Файл в Другое Удалённое Местоположение
- Итоги
Передача файлов в Linux с помощью SCP
Linux-администратор должен уверенно владеть интерфейсом командной строки, так как на большинстве Linux-серверов не устанавливается графическая оболочка. SSH является наиболее популярным протоколом, который обеспечивает администратору возможность безопасного удаленного управления сервером. Для безопасного копирования файлов между серверами с использованием этого протокола используется команда scp (secure copy – безопасное копирование). В данном руководстве мы рассмотрим основы работы с командой scp и наиболее важные опции.
Базовый синтаксис
Команда scp выглядит следующим образом
Данная команда выполняет копирование указанного файла (имя_файла) в конкретную директорию (директория_назначения) на узле назначения (узел_назначения) с использованием учетной записи определенного пользователя (пользователь).
Подробная информация о процессе копирования
При запуске без параметров команда scp будет копировать файлы в фоновом режиме. Пользователь ничего не видит, пока процесс не будет завершен, или не возникнет какая-либо ошибка. Для вывода подробной информации о процессе копирования на экран можно воспользоваться параметром –v. Это может помочь в отладке проблем соединения, аутентификации и конфигурации.
Сохранение значений атрибутов
Для копирования файлов с сохранением времени доступа, модификации и прав доступа используется опция –p. На экране отобразятся примерное время выполнения и скорость соединения:
Сжатие файлов при передаче
Опция –C поможет ускорить передачу файлов за счет их сжатия. Преимущество такой передачи в том, что сжатие будет выполняться только для передачи по сети. При завершении копирования на сервере места назначения размер файла вернется к первоначальному, каким он был до сжатия.
Допустим, требуется скопировать файл размером 1 ГБ. Следующая команда выполнит это без сжатия:
Время копирования составило 20.3 секунды. Теперь выполним копирование с параметром –C:
Видно, что при использовании сжатия процесс передачи требует всего 3,4 секунды. Это более чем в 6 раз быстрее. Однако, важно отметить, что сжатие работает не для всех файлов. При копировании уже сжатых файлов никакого ускорения не будет, поэтому на архивы, изображения и файлы образов этот параметр не действует.
Выбор алгоритма шифрования
По умолчанию scp использует для шифрования файлов алгоритм AES-128. Если требуется другой алгоритм, его можно изменить при помощи опции -c:
В данном случае задан алгоритм 3DES. Обратите внимание, что данный параметр указывается маленькой буквой -с, а не большой -C.
Ограничение скорости передачи
Опция -l ограничивает скорость передачи, указывается в кбит/c. Она полезна для использования в скриптах для автоматического копирования большого количества файлов, чтобы процесс scp не занимал весь канал.
После параметра указывается значение ограничения скорости в килобитах в секунду, а при передаче скорость отображается в килобайтах в секунду. В данном случае мы указали 400 кбит/с, что эквивалентно 50 кбайт/с, так как в одном байте 8 бит (400/8 = 50).
Выбор порта для scp
Обычно scp по умолчанию использует порт 22, но в целях безопасности может потребоваться его изменить. Для этого применяется опция -P. Например, если мы используем порт 2249:
Убедитесь, что буква заглавная, так как строчная p используется для сохранения атрибутов.
Рекурсивное копирование каталогов
Если требуется копирование директории со всеми поддиректориями и файлами внутри, лучше сделать это одной командой. В scp для этого используется параметр -r:
scp -r /root/documents root@10.10.10.2:.
После завершения процесса копирования на сервере места назначения появится директория documents со всеми файлами, которая будет создана автоматически.
Отключение отображения прогресса и служебных сообщений
Если вы не хотите видеть прогресс выполнения операции, предупреждения и диагностические сообщения scp, их можно отключить параметром
# scp -q label.pdf root@10.10.10.2:.
После ввода пароля не отображается никакой информации о работе команды. После завершения процесса копирования вы снова увидите командную строку.
Копирование файлов через прокси
В офисных сетях часто используются прокси-серверы. Изначально scp не настроена для работы через прокси, поэтому если вы используете прокси-сервер, нужно «сообщить» об этом команде. Для работы протокола SSH через прокси-сервер требуется туннелирование, которое осуществляется при помощи специальной программы Corkscrew. В вашей системе она может быть не установлена, в этом случае нужно воспользоваться стандартной процедурой установки:
Допустим, адрес вашего прокси-сервера 10.0.96.6, а порт 8080, и на сервере требуется аутентификация пользователя. Нужно создать файл
/.ssh/config и прописать там следующую команду:
Затем нужно создать файл
/.ssh/proxyauth, содержащий имя пользователя и пароль для аутентификации на прокси-сервере в следующем формате:
Теперь можно использовать scp в прозрачном режиме, как обычно. Необходимо исключить доступ посторонних лиц к файлу
/.ssh/proxyauth, потому что в нем открытым текстом указаны имя пользователя и пароль.
Выбор другого файла конфигурации
Мобильным пользователям, которые попеременно используют сеть компании и публичные сети, будет тяжело каждый раз менять настройки scp. Лучше всего создать для этого отдельный файл ssh_config и воспользоваться параметром -F.
По умолчанию файл ssh_config для пользователя находится в
/.ssh/config. Если создать отдельный файл proxy_ssh_config для использования прокси, это упростит переход между сетями.
Например, если в сети компании используется прокси-сервер, а в публичной сети – нет, а пользователь попеременно работает в разных сетях, можно использовать опцию -F с именем нужного файла конфигурации для сети компании, а в публичной сети ее не указывать:
Заключение
Мы рассмотрели наиболее распространенные примеры работы с командой scp. Более подробную информацию можно получить в соответствующих man-страницах.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
SCP Команда Linux для Удалённого Копирования Файлов
Безопасная передача файлов является приоритетом номер один для тех, кто используют VPS. SCP команда Linux позволяет выполнить безопасное копирование и перенос ваших файлов. И в этой статье мы расскажем, как это сделать.
Что такое команда SCP? Основанная на протоколе удаленного копирования (RCP) Berkeley Software Distribution (BSD), SCP (Secure Copy) представляет собой сетевой протокол передачи файлов, который позволяет легко и безопасно передавать/копировать файлы между удалённым и локальным хостом или двумя удалёнными местоположениями.
Full Stack-разработчики часто применяют эту команду Linux через её функции аутентификации и шифрования, а также отсутствие необходимости использовать сторонние хостинговые сервисы, такие как Github. SCP — это простой способ защитить данные от перехватчиков и сохранить их конфиденциальность.
По сути, SCP представляет собой смесь RCP и SSH (Secure Shell). Первый протокол обеспечивает выполнение операций копирования, а второй шифрует информацию и проверяет подлинность удалённых систем.
В отличие от Rsync, всё, что вам нужно для успешного использования командной строки SCP, это имя пользователя и пароль или секретная фраза для систем, участвующих в передаче. Это упрощает процесс, так как вам не нужно входить ни в одну из них.
Прокачайте ваш проект, воспользовавшись скидками на VPS-хостинг в Hostinger! Большой выбор планов, как для учебных, так и для крупных коммерческих проектов.
Синтаксис Примера SCP Команды
Пример базовой команды SCP выглядит следующим образом:
Слишком сложно? Давайте разбираться.
В этом примере мы выполняем передачу между двумя серверами VPS.
- [other options] — это модификаторы, которые вы можете добавить к команде SCP. Мы рассмотрим самые популярные из них немного позже.
- [source username@IP] — имя пользователя и IP-адрес компьютера, на котором находится нужный файл. На практике это будет выглядеть как-то так — root@123.123.123.12.
- :/ сообщает команде SCP, что вы собираетесь ввести исходный каталог.
- [directory and file name] — это место, где находится файл, и его название. На деле это выглядит так: /users/Olha/Desktop/SCP.png.
- [destination username@IP] — это имя пользователя и IP-адрес компьютера назначения.
- [destination directory] — каталог назначения, в который будет сохранён файл.
В реальном жизни SCP команда будет выглядеть так:
Видите, это довольно просто. Если вы копируете на локальный компьютер или с локального компьютера, вам не понадобится IP-адрес, место назначения или исходный путь, например, /desktop/folder_name.
Давайте поговорим о других опциях модификации этой утилиты. Существует 20 распространённых вариантов, которые можно использовать как в односимвольной форме (-o), так и в их описательном эквиваленте (–option). Вот список популярных модификаторов команды SCP в Linux:
- –P (port) позволяет указать нестандартный порт (порт по умолчанию — 22).
- –с (cipher) даёт возможность указать алгоритм шифрования, который будет использовать клиент. Некоторые из значений, которые вы можете использовать: “aes256-ctr”, “aes256-cbc”, “blowfish-cbc”, “arcfour”, “arcfour128”, “arcfour256”, “cast128-cbc”, “aes128-ctr”, “aes128-cbc”, “aes192-ctr”, “aes192-cbc” и “3des-cbc”. Параметром по умолчанию в конфигурации оболочки является “AnyStdCipher”.
- –q выполнит операцию в тихом режиме, это означает, что отображаться будут только критические ошибки.
- –r для рекурсивного копирования, которое будет включать все подкаталоги.
- -4 или -6 , если вы хотите выбрать используемую версию протокола: IPv4 или IPv6. Вы также можете более подробно настроить требования к IP-адресу с помощью ключевого слова address-family.
- –p сохранит начальное время изменения и атрибуты файла.
- –u удалит исходный файл после завершения передачи.
- –c включит сжатие данных во время операции передачи.
SCP Команда: На Что Обратить Внимание
Поскольку SCP использует шифрование SSH, для копирования файла вам потребуется пароль ssh. Кроме того, необходимо иметь право на чтение на машине, с которой вы собираетесь копировать, и право на запись на машине(ах), куда вы будете копировать.
Для аутентификации и настройки соединения вам нужно будет создать пару ключей ssh с помощью следующей команды:
Вы копируете этот ключ в удалённую систему, используя:
Открытый ключ будет скопирован сразу после аутентификации на удалённом(ых) компьютере(ах), после чего вы сможете выполнить перенос.
Если вы не помните пароль(и) root для какой-либо из систем, вы можете попросить клиента ssh выбрать файл, из которого закрытый идентификационный ключ для подтверждения RSA будет считываться автоматически.
Для протокола версии 2 дефолтный путь идентификации ключа хоста —
/.ssh/id_dsa , а для версии протокола 1 —
/.ssh/id_rsa. Затем нужно выяснить, где хранятся резервные копии закрытых и открытых ключей, чтобы вы могли применить команду ssh для их автоматического использования.
Для пути /back-up/home/jack/.ssh команда выглядит следующим образом:
Совет : значением по умолчанию этого параметра является –overwrite [yes] , поэтому, если вы не укажете опцию –overwrite no или –overwrite ask в своей команде scp, операция перезапишет файлы с одинаковыми названиями и местоположениями без каких-либо предупреждений.
Если вы копируете большие файлы, мы рекомендуем использовать сеанс tmux или запустить команду на другом экране. Кроме того, вы также должны использовать опцию -v. Это заставит scp отображать любые отладочные соединения, проблемы с аутентификацией или конфигурацией.
SCP Команда и Копирование Файлов
Самое замечательное в SCP то, что она даёт вам возможность передавать файлы между двумя хостами или между хостом и локальной машиной. Давайте посмотрим, как используется эта команда для каждого типа передачи.
Локальный Файл в Удалённое Местоположение
Мы скопируем локальный файл scp.zip на пользователя удалённого компьютера с названием root . За именем пользователя следует IP-адрес сервера.
Если у вас не настроено автоматическое подтверждение клиента ssh, вам будет предложено ввести пароль от пользователя удалённого компьютера, после чего вы увидите индикатор прогресса. Это будет выглядеть примерно так:
Но допустим, что удалённый компьютер настроен на прослушивание SSH-соединений через порт, отличный от порта по умолчанию 22. В этом случае вы должны указать этот порт с помощью параметра.
Если вы также хотите изменить имя файла во время копирования, то ваша команда будет выглядеть следующим образом (если ваш порт не является портом по умолчанию, просто добавьте –P и номер порта):
Если вы хотите скопировать каталог, содержащий файлы и/или подкаталоги, используйте параметр –r , описанный выше.
Удалённый Файл на Локальную Машину
В этом процессе источник и цель команды меняются местами, что должно отразиться на вашем синтаксисе. В этот раз мы пытаемся скопировать файл scp.zip с того же удалённого хоста на наш локальный компьютер:
Опять же, это должно вызвать тот же вывод входа в систему через SSH, где вы должны ввести пароль, если аутентификация не была отключена привилегиями sudo или вы не заставили ssh-клиент использовать закрытый ключ на вашем компьютере.
Удалённый Файл в Другое Удалённое Местоположение
Чтобы скопировать файлы с одного удалённого хоста на другой, вам нужно будет ввести пароли для обеих учётных записей после запуска этой команды в терминале.
Приведённая выше команда копирует исходный файл /writing/article/scp.zip с одного хоста на другой. Чтобы скопировать папки, просто добавьте параметр -r и укажите путь к папке, а не файл внутри неё, как мы делали раньше.
При нормальных обстоятельствах файл копируется непосредственно с одного удалённого хоста на другой. Однако, если вы хотите перенаправить операцию через ваш компьютер, вы можете добавить опцию -3 :
Итоги
В этой статье мы узнали, что такое SCP команда в Linux и, как с её помощью передавать файлы между удалёнными и локальными узлами. Это очень полезно, когда вы работаете с несколькими серверами. Протокол защищённого копирования, или SCP облегчает копирование информации с одного удалённого хоста на другой, поскольку вам не приходится входить в систему.
Кроме того, этот метод удалённой передачи файлов шифрует ваши данные с помощью безопасной оболочки (SSH), что обеспечивает конфиденциальность передаваемой вами информации.
Ольга уже около пяти лет работает менеджером в сфере IT. Написание технических заданий и инструкций — одна из её главных обязанностей. Её хобби — узнавать что-то новое и создавать интересные и полезные статьи о современных технологиях, веб-разработке, языках программирования и многом другом.
Источник