Что за программа scp

Содержание

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

С помощью scp вы можете скопировать файл или каталог:

  • Из вашей локальной системы в удаленную.
  • Из удаленной системы в вашу локальную.
  • Между двумя удаленными системами из вашей локальной системы.

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

В этом руководстве мы покажем вам, как использовать команду scp на практических примерах и подробных объяснениях наиболее распространенных параметров scp.

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

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

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

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

Вирусное приложение SCP-1471 MalO версия 1.0.0 (Анимация SCP)

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

  • -P — указывает ssh-порт удаленного хоста.
  • -p — сохраняет время изменения и доступа к файлам.
  • -q — используйте эту опцию, если вы хотите отключить индикатор выполнения и сообщения, не связанные с ошибками.
  • -C — этот параметр заставляет scp сжимать данные при их отправке на конечный компьютер.
  • -r — этот параметр указывает scp рекурсивно копировать каталоги.

Подготовка

Команда scp использует ssh для передачи данных, поэтому для аутентификации в удаленных системах требуется ключ ssh или пароль.

Двоеточие ( : ), как scp различия между локальными и удаленными участками.

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

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

При передаче больших файлов рекомендуется запускать команду scp внутри сеанса screen или tmux .

Копирование файлов и каталогов между двумя системами с помощью scp

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

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

scp file.txt [email protected]:/remote/directory

Где file.txt — это имя файла, который мы хотим скопировать, remote_username — это пользователь на удаленном сервере, 10.10.0.2 — это IP-адрес сервера. /remote/directory — это путь к каталогу, в который вы хотите скопировать файл. Если вы не укажете удаленный каталог, файл будет скопирован в домашний каталог удаленного пользователя.

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

[email protected]’s password: file.txt 100% 0 0.0KB/s 00:00

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

Фонд SCP существует! [ЗАПРЕЩЕННОЕ ВИДЕО]


scp file.txt [email protected]:/remote/directory/newfilename.txt

Если SSH на удаленном хосте прослушивает порт, отличный от порта по умолчанию 22, вы можете указать порт с помощью аргумента -P :

scp -P 2322 file.txt [email protected]:/remote/directory

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

Чтобы скопировать каталог из локальной в удаленную систему, используйте параметр -r :

scp -r /local/directory [email protected]:/remote/directory

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

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

Например, чтобы скопировать файл с именем file.txt с удаленного сервера с IP 10.10.0.2 выполните следующую команду:

scp [email protected]:/remote/file.txt /local/directory

Если вы не установили SSH-вход без пароля для удаленного компьютера, вам будет предложено ввести пароль пользователя.

Скопируйте файл между двумя удаленными системами с помощью команды scp

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

Читайте также:
Hardware check что это за программа на Андроид

Следующая команда скопирует файл /files/file.txt с удаленного хоста host1.com в каталог /files на удаленном хосте host2.com .

scp [email protected]:/files/file.txt [email protected]:/files

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

Чтобы направить трафик через машину, на которой выдается команда, используйте параметр -3 :

scp -3 [email protected]:/files/file.txt [email protected]:/files

Выводы

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

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

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

Источник: routerus.com

Передача файлов в 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:

После завершения процесса копирования на сервере места назначения появится директория documents со всеми файлами, которая будет создана автоматически.

Отключение отображения прогресса и служебных сообщений

Если вы не хотите видеть прогресс выполнения операции, предупреждения и диагностические сообщения scp, их можно отключить параметром

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

Копирование файлов через прокси

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

$ apt-get install corkscrew
# yum install corkscrew

Допустим, адрес вашего прокси-сервера 10.0.96.6, а порт 8080, и на сервере требуется аутентификация пользователя. Нужно создать файл ~/.ssh/config и прописать там следующую команду:

Читайте также:
Internet что за программа

ProxyCommand /usr/bin/corkscrew 10.0.96.6 8080 %h %p ~/.ssh/proxyauth

Затем нужно создать файл ~/.ssh/proxyauth, содержащий имя пользователя и пароль для аутентификации на прокси-сервере в следующем формате:

имя:пароль

Теперь можно использовать scp в прозрачном режиме, как обычно. Необходимо исключить доступ посторонних лиц к файлу ~/.ssh/proxyauth, потому что в нем открытым текстом указаны имя пользователя и пароль.

Выбор другого файла конфигурации

Мобильным пользователям, которые попеременно используют сеть компании и публичные сети, будет тяжело каждый раз менять настройки scp. Лучше всего создать для этого отдельный файл ssh_config и воспользоваться параметром -F.

По умолчанию файл ssh_config для пользователя находится в ~/.ssh/config. Если создать отдельный файл proxy_ssh_config для использования прокси, это упростит переход между сетями.

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

Заключение

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

При передаче файлов на удаленный сервер Linux у вас есть несколько вариантов. Одним из лучших способов является использование программы Secure Copy, или SCP , которая работает по протоколу SSH для быстрой передачи файлов по сети на удаленную систему. В этом руководстве показано, как безопасно передавать файлы с помощью SCP в Linux. Как передавать файлы на MacOS мы писали ранее в статье – . Как использовать SCP для передачи файлов в терминале macOS

Настройка SSH

На удаленном сервере необходимо установить SSH -сервер. Наиболее распространенным в Linux является сервер OpenSSH. Чтобы установить его, выполните одну из следующих команд:

# сервер на базе Debian/Ubuntu sudo apt install ssh # Fedora sudo dnf install openssh

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

В зависимости от вашего дистрибутива, вам может понадобиться разрешить SSH через некоторые программные брандмауэры. На Ubuntu этой проблемы не существует, но на Fedora вам придется дать удаленный доступ:

sudo firewall-cmd —add-service=ssh —permanent sudo firewall-cmd —reload

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

Подключение к системе через SSH

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

ip addr

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

В выводе ищите строку, начинающуюся с inet под ethX или enpXsy , в зависимости от того, как ваш сетевой интерфейс подключен к системе. В моем случае это 192.168.68.108.

Чтобы проверить SSH соединение, перейдите на другой компьютер и введите:

Смените «user» на реальное имя пользователя на сервере.

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

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

Использование SCP для передачи файлов

Теперь, когда вы протестировали SSH -соединение, начните копировать файлы между двумя машинами. Безопасное копирование осуществляется с помощью команды scp . Основной формат команды следующий:

Например, чтобы скопировать файл «backup.tar.gz» с локальной машины в папку «backups» в домашнем каталоге пользователя «ramces» на удаленном сервере с IP-адресом 192.168.68.165, используйте:

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

Как и при подключении с помощью ssh , вам будет предложено ввести пароль. Имя пользователя запрашиваться не будет, так как оно было указано в команде.

Вы также можете использовать маски, например * , следующие:

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

Для копирования файла с удаленного сервера на локальную машину, просто измените параметры:

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

Заметили точку в конце команды? Она означает «текущий каталог», как и в стандартных командах cp или mv . Вы можете с таким же успехом указать и другой каталог, если захотите.

И то же самое с масками:

Для рекурсивного копирования каталога на удаленный сервер используйте опцию -r :

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

Для рекурсивного копирования каталога с удаленного сервера на локальную машину используйте:

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

Сжатие передачи файлов в SCP

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

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

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

По аналогии с вышеописанными опциями, вы также можете использовать -C вместе с флагом -r для рекурсивного сжатия и передачи файлов на удаленную машину. Например, следующая команда сжимает и извлекает файл «backup.tar.gz» с моего удаленного сервера:

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

Оптимизация передачи данных с помощью SCP

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

Читайте также:
Для чего внедрять программы

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

Например, следующая команда передает файл «backup.tar.gz» на мой удаленный сервер, используя AES -256:

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

Далее, опция -c также позволяет вам предоставить список шифров, которые вы хотите использовать для передачи определенного файла. Например, следующая команда использует AES -192 и AES -256 при передаче файла «backup.tar.gz» на мой удаленный сервер:

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

Ограничение использования полосы пропускания в SCP

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

Чтобы ограничить эффективную пропускную способность программы, вам нужно использовать флаг -l , за которым следует верхний предел, который вы хотите установить в килобитах в секунду (Кб/с). Например, выполнение следующей команды передаст файл «backup.tar.gz» на мой удаленный сервер с эффективной пропускной способностью 1600 Кб/с:

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

Передача с удаленного на удаленный сервер с помощью SCP

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

Для передачи между двумя удаленными серверами необходимо явно указать имя пользователя и адрес каждой из этих машин. Например, выполнение следующей команды передаст мой файл «remote-backup.tar.gz» между двумя удаленными серверами:

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

Использование прокси в SCP

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

Для этого необходимо использовать флаг -o , за которым следует опция ProxyCommand . Это позволит вам создать базовое SSH -соединение с новой машиной, которая, в свою очередь, выполнит вашу команду SCP . Например, выполнение следующей команды создаст новый SSH -прокси с удаленной машиной и передаст через него файл «backup.tar.gz»:

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

Изменение порта по умолчанию в SCP

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

Чтобы использовать SCP с другим портом, вам нужно использовать флаг -P , за которым следует номер порта, который вы хотите использовать. Например, следующая команда рекурсивно скопирует мой каталог «backup» и соединится с моим удаленным сервером, используя порт 2222:

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

Использование тихого режима SCP

Последнее, что можно сделать, – это полностью удалить любой вывод терминала из команды SCP . Это особенно полезно, если вы хотите создать неинтерактивный скрипт, который будет выполняться на вашей машине. Мало того, вы можете полностью автоматизировать этот процесс, создав cronjob и передав закрытый SSH -ключ на ваш сервер.

Чтобы создать тихую SCP -передачу, вам нужно использовать флаг -q . Например, следующая команда тихо передаст мой файл «backup.tar.gz» на мой удаленный сервер:

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

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

Моя передача данных с удаленного на удаленный в SCP не работает. Как я могу это исправить?

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

Эта проблема также может быть вызвана тем, что одна из ваших удаленных машин находится за соединением NAT , поэтому любое внешнее соединение с вашей удаленной машиной не будет разрешено должным образом. Чтобы исправить это, вам нужно использовать программу Virtual LAN , например, Yggdrasil, которая позволит вам пробить NAT .

Я запустил SCP -прокси, а удаленный хост закрыл соединение. Что мне делать?

Эта проблема, скорее всего, связана с вашей прокси-машиной. Чтобы правильно запустить SSH -прокси, убедитесь, что на машине, которую вы хотите использовать, есть сервер OpenSSH и netcat. Чтобы установить эти программы в Ubuntu, выполните следующую команду:

sudo apt install ssh netcat

Можно ли узнать все доступные шифры для SCP ?

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

Зарубин Иван Эксперт по Linux и Windows

Опытный системный администратор с большим стажем работы на крупном российском заводе. Иван является энтузиастом OpenSource и любителем Windows, проявляя высокую компетентность в обоих операционных системах. Благодаря его технической грамотности и умению решать сложные задачи, Иван стал неотъемлемой частью команды нашего проекта, обеспечивая непрерывную авторскую работу.

Похожие статьи

Источник: itshaman.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru