Администраторы Linux должны быть знакомы со средой командной строки. С графический интерфейс (Графический пользовательский интерфейс) на серверах Linux обычно не устанавливается.
SSH может быть самый популярный протокол чтобы позволить администраторам Linux управлять серверами безопасным удаленным способом. Встроенный с SSH команда есть SCP команда, которая используется для копировать файл(ы) между серверами безопасным способом.
Базовый синтаксис команды SCP
Приведенная ниже команда будет читаться как копия «исходный_файл_имя» в «папка назначения» в «пункт назначения_хост» используя «имя пользователя» счет.
scp source_file_name [email protected]_host:destination_folder
В программе много параметров SCP команду, которую вы можете использовать. Вот параметры, которые могут использоваться при ежедневном использовании.
Оглавление
Безопасная передача файлов в Linux
Базовый SCP Команда без параметров скопирует файлы в фоновом режиме. Пользователи ничего не увидят, пока процесс не завершится или не появится какая-то ошибка.
Вы можете использовать «-v
” для вывода отладочной информации на экран. Это может помочь вам отладить проблемы с подключением, аутентификацией и конфигурацией.
Скопировать файл с локального хоста на удаленный сервер
Следующая команда копирует файл «scp-шпаргалка.pdf” с локальной на удаленную систему Linux под /дом/текминт каталог.
$ scp -v scp-cheatsheet.pdf [email protected]:/home/tecmint/.
Пример вывода:
Executing: program /usr/bin/ssh host 192.168.0.183, user tecmint, command scp -v -t /home/tecmint/. OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f 31 Mar 2020 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to 192.168.0.183 [192.168.0.183] port 22. debug1: Connection established. debug1: identity file /home/tecmint/.ssh/id_rsa type -1 debug1: identity file /home/tecmint/.ssh/id_rsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_dsa type -1 debug1: identity file /home/tecmint/.ssh/id_dsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519 type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519_sk type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519_sk-cert type -1 debug1: identity file /home/tecmint/.ssh/id_xmss type -1 ...
Скопировать файл с удаленного хоста на локальный хост
Следующая команда копирует файл «ssh-cheatsheet.pdf” с удаленного хоста на локальную систему под /дом/текминт каталог.
$ scp -v [email protected]:/home/ravi/ssh-cheatsheet.pdf /home/tecmint/.
Пример вывода:
Executing: program /usr/bin/ssh host 192.168.0.183, user tecmint, command scp -v -f /home/ravi/ssh-cheatsheet.pdf OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f 31 Mar 2020 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to 192.168.0.183 [192.168.0.183] port 22. debug1: Connection established. debug1: identity file /home/tecmint/.ssh/id_rsa type -1 debug1: identity file /home/tecmint/.ssh/id_rsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_dsa type -1 debug1: identity file /home/tecmint/.ssh/id_dsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519 type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519_sk type -1 ...
Скопировать файл с удаленного хоста на другой хост
Следующая команда копирует файл «ssh-cheatsheet.pdf” с удаленного хоста на другую удаленную хост-систему под /дом/текминт каталог.
$ scp -v [email protected]:/home/ravi/ssh-cheatsheet.pdf [email protected]:/home/anusha/.
Копировать файлы с исходной датой и временем создания
“-p
” сохранит исходное время модификации файлов и время доступа при копировании файлов, а также расчетное время и скорость соединения, которые будут отображаться на экране.
$ scp -p scp-cheatsheet.pdf [email protected]:/home/tecmint/.
Пример вывода:
[email protected]'s password: scp-cheatsheet.pdf 100% 531 721.4KB/s 00:00
Сжатие scp при копировании файлов
Одним из параметров, который может ускорить передачу файлов, является «-C
», который используется для сжать ваши файлы на ходу. Уникальность заключается в том, что сжатие происходит только в сети. Когда файл прибудет на целевой сервер, он вернется к исходному размеру, как до сжатия.
Взгляните на эти команды. Он использует один файл 93 Мб.
$ scp -pv messages.log [email protected]:.
Пример вывода:
Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t. OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Connecting to 202.x.x.x [202.x.x.x] port 22. debug1: Connection established. debug1: identity file /home/pungki/.ssh/id_rsa type -1 debug1: Found key in /home/pungki/.ssh/known_hosts:1 debug1: ssh_rsa_verify: signature correct debug1: Trying private key: /home/pungki/.ssh/id_rsa debug1: Next authentication method: password [email protected]'s password: debug1: Authentication succeeded (password). Authenticated to 202.x.x.x ([202.x.x.x]:22). debug1: Sending command: scp -v -p -t. File mtime 1323853868 atime 1380425711 Sending file timestamps: T1323853868 0 1380425711 0 messages.log 100% 93MB 58.6KB/s 27:05 Transferred: sent 97614832, received 25976 bytes, in 1661.3 seconds Bytes per second: sent 58758.4, received 15.6 debug1: Exit status 0
Копирование файлов без «-C
” приведет к 1661,3 секунды. Вы можете сравнить результат с приведенной ниже командой, используя «-C"
параметр.
$ scp -Cpv messages.log [email protected]:.
Пример вывода:
Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t. OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Connecting to 202.x.x.x [202.x.x.x] port 22. debug1: Connection established. debug1: identity file /home/pungki/.ssh/id_rsa type -1 debug1: Host '202.x.x.x' is known and matches the RSA host key. debug1: Found key in /home/pungki/.ssh/known_hosts:1 debug1: ssh_rsa_verify: signature correct debug1: Next authentication method: publickey debug1: Trying private key: /home/pungki/.ssh/id_rsa debug1: Next authentication method: password [email protected]'s password: debug1: Enabling compression at level 6. debug1: Authentication succeeded (password). Authenticated to 202.x.x.x ([202.x.x.x]:22). debug1: channel 0: new [client-session] debug1: Sending command: scp -v -p -t . File mtime 1323853868 atime 1380428748 Sending file timestamps: T1323853868 0 1380428748 0 Sink: T1323853868 0 1380428748 0 Sending file modes: C0600 97517300 messages.log messages.log 100% 93MB 602.7KB/s 02:38 Transferred: sent 8905840, received 15768 bytes, in 162.5 seconds Bytes per second: sent 54813.9, received 97.0 debug1: Exit status 0 debug1: compress outgoing: raw data 97571111, compressed 8806191, factor 0.09 debug1: compress incoming: raw data 7885, compressed 3821, factor 0.48
Как видите, когда вы используете сжатие, процесс передачи выполняется в 162,5 секунды. Это 10 раз быстрее, чем без использования «-C
параметр. Если вы копируете много файлов по сети,-C
” поможет вам сократить общее время, которое вам нужно.
Следует отметить, что метод сжатия не будет работать ни с какими файлами. Когда исходный файл уже сжат, вы не найдете там никаких улучшений. Файлы, такие как .zip, .rar, картинкии .исо файлы не будут затронуты «-C
параметр.
Измените шифр SCP для шифрования файлов
По умолчанию, SCP использует «АЭС-128” для шифрования файлов. Если вы хотите перейти на другой шифр для его шифрования, вы можете использовать «-c
параметр.
Взгляните на эту команду.
$ scp -c 3des Label.pdf [email protected]:. [email protected]'s password: Label.pdf 100% 3672KB 282.5KB/s 00:13
Приведенная выше команда сообщает SCP использовать алгоритм 3des для шифрования файла. Обратите внимание, что этот параметр, использующий «-c
» нет «-C
“.
Ограничение использования пропускной способности с помощью команды SCP
Другим параметром, который может быть полезен, является «-l
параметр. “-лпараметр будет ограничить пропускную способность для использования. Это будет полезно, если вы выполняете сценарий автоматизации для копирования большого количества файлов, но не хотите, чтобы полоса пропускания истощалась из-за SCP процесс.
$ scp -l 400 Label.pdf [email protected]:. [email protected]'s password: Label.pdf 100% 3672KB 50.3KB/s 01:13
400 значение, стоящее за «-l
” означает, что мы ограничиваем пропускную способность для SCP обрабатывать только 50 КБ/сек.
Следует помнить, что пропускная способность указана в килобиты/сек (кбит/с). Это означает, что 8 бит равны 1 байт.
Пока SCP засчитывается Килобайт/сек (КБ/с). Поэтому, если вы хотите ограничить пропускную способность SCP максимум только 50 КБ/свам нужно установить его на 50 х 8 «=» 400.
SCP с другим портом
Обычно, SCP использует порт 22 в качестве порта по умолчанию, но из соображений безопасности вы можете изменить порт на другой порт. Например, мы используем порт 2249.
Тогда команда должна быть такой.
$ scp -P 2249 Label.pdf [email protected]:. [email protected]'s password: Label.pdf 100% 3672KB 262.3KB/s 00:14
Убедитесь, что он использует заглавную букву «P
» нет «p
» с «p
” уже используется для сохраненных времен и режимов.
SCP — рекурсивное копирование файлов и каталогов
Иногда нам нужно скопировать каталог и все файлы/каталоги внутри него. Будет лучше, если мы сможем сделать это одной командой с помощью «-r
», который рекурсивно копирует весь каталог.
$ scp -r documents [email protected]:. [email protected]'s password: Label.pdf 100% 3672KB 282.5KB/s 00:13 scp.txt 100% 10KB 9.8KB/s 00:00
Когда процесс копирования завершится, на целевом сервере вы найдете каталог с именем «документы” со всеми его файлами. Папка «документы” создается автоматически.
SCP — отключить сообщения о ходе выполнения
Если вы решите не видеть индикатор выполнения и предупреждающие / диагностические сообщения от SCP, вы можете отключить его с помощью кнопки «-q
параметр. Вот пример.
$ scp -q Label.pdf [email protected]:. [email protected]'s password: [email protected] ~/Documents $
Как видите, после ввода пароля информации о процессе SCP нет. После завершения процесса вы снова увидите подсказку.
SCP — копирование файлов с использованием прокси
Прокси-сервер обычно используется в офисной среде. Изначально, SCP не настроен прокси. Если в вашей среде используется прокси-сервер, вам необходимо:рассказывать” SCP для связи с прокси.
Вот сценарий. Адрес прокси 10.0.96.6 и порт прокси 8080. Прокси также реализовал аутентификацию пользователя. Во-первых, вам нужно создать «~/.ssh/config” файл. Во-вторых, вы помещаете эту команду внутрь него.
ProxyCommand /usr/bin/corkscrew 10.0.96.6 8080 %h %p ~/.ssh/proxyauth
Затем вам нужно создать файл «~/.ssh/прокси-аутент» который содержит.
myusername:mypassword
После этого можно делать SCP прозрачно, как обычно.
Обратите внимание, что штопор может быть еще не установлен в вашей системе. На моем Линукс Минт мне нужно сначала установить его, используя стандартную процедуру установки Linux Mint.
$ apt-get install corkscrew
Для других системы на основе yumпользователи могут установить штопор, используя следующие ням команда.
# yum install corkscrew
Другое дело, что с момента «~/.ssh/прокси-аутент» содержит ваш «имя пользователя» и «пароль” в текстовом формате, пожалуйста, убедитесь, что доступ к файлу есть только у вас.
Выберите другой файл ssh_config
Для мобильных пользователей, которые часто переключаются между сетями компании и общедоступными сетями, постоянное изменение настроек в SCP будет вызывать затруднения. Лучше, если мы сможем поставить другой ssh_config файл, соответствующий нашим потребностям.
Прокси используется в сети компании, но не в сети общего пользования, и вы регулярно переключаетесь между сетями.
$ scp -F /home/pungki/proxy_ssh_config Label.pdf [email protected]:. [email protected]'s password: Label.pdf 100% 3672KB 282.5KB/s 00:13
По умолчанию «ssh_config» для каждого пользователя будет помещен в «~/.ssh/config“. Создание определенного «ssh_config” с совместимостью с прокси упростит переключение между сетями.
Когда вы находитесь в сети компании, вы можете использовать «-F
параметр. Когда вы находитесь в общедоступной сети, вы можете пропустить «-F
параметр.
Это все о SCP. Ты можешь видеть справочные страницы из SCP для более подробной информации. Пожалуйста, не стесняйтесь оставлять комментарии и предложения.