Поиск по сайту:

Команда SCP Linux – безопасная передача файлов в Linux


Администраторы Linux должны быть знакомы со средой командной строки. Поскольку режим GUI (графический интерфейс пользователя) на серверах Linux устанавливается нечасто.

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

Основной синтаксис команды SCP

Приведенная ниже команда будет читаться как копирование «имя_исходного_файла» в «папку_назначения» на «хост_назначения» с использованием «имя_пользователя». " счет.

scp source_file_name username@destination_host:destination_folder

В команде SCP имеется множество параметров, которые вы можете использовать. Вот параметры, которые можно использовать при ежедневном использовании.

Безопасная передача файлов в Linux

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

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

Скопировать файл с локального хоста на удаленный сервер

Следующая команда копирует файл «scp-cheatsheet.pdf» из локальной в удаленную систему Linux в каталоге /home/tecmint.

scp -v scp-cheatsheet.pdf [email :/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» с удаленного хоста в локальную систему в каталоге /home/tecmint.

scp -v [email :/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» с удаленного хоста на другую удаленную хост-систему в каталоге /home/tecmint.

scp -v [email :/home/ravi/ssh-cheatsheet.pdf [email :/home/anusha/.

Копирование файлов с исходной датой и временем создания

Параметр «-p» сохранит исходное время модификации файлов и время доступа при копировании файлов, а также расчетное время, и на экране появится скорость соединения.

scp -p scp-cheatsheet.pdf [email :/home/tecmint/.

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

[email 's password: 
scp-cheatsheet.pdf                                                                                                                                                                 100%  531   721.4KB/s   00:00    

Сжатие Scp при копировании файлов

Одним из параметров, ускоряющих передачу файлов, является параметр «-C», который используется для сжатия файлов на ходу. Уникальность заключается в том, что сжатие происходит только в сети. Когда файл достигнет целевого сервера, он вернется к исходному размеру, который был до сжатия.

Взгляните на эти команды. Он использует один файл размером 93 МБ.

scp -pv messages.log [email :.

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

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 '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 :.

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

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 '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, изображения и .iso, не будут затронуты « -C».

Измените шифр SCP для шифрования файлов

По умолчанию SCP использует «AES-128» для шифрования файлов. Если вы хотите перейти на другой шифр для его шифрования, вы можете использовать параметр «-c».

Взгляните на эту команду.

scp -c 3des Label.pdf [email :.

[email 's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13

Приведенная выше команда сообщает SCP использовать алгоритм 3des для шифрования файла. Обратите внимание, что этот параметр использует «-c», а не «-C».

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

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

scp -l 400 Label.pdf [email :.

[email '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 :.

[email 's password:
Label.pdf 100% 3672KB 262.3KB/s 00:14

Убедитесь, что используется заглавная буква «P», а не «p», поскольку «p» уже используется для сохраненных времен и режимов.

SCP – рекурсивное копирование файлов и каталогов

Иногда нам нужно скопировать каталог и все файлы/каталоги в нем. Будет лучше, если мы сможем сделать это одной командой, используя параметр «-r», который рекурсивно копирует весь каталог.

scp -r documents [email :.

[email 's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13
scp.txt 100% 10KB 9.8KB/s 00:00

Когда процесс копирования завершится, на целевом сервере вы найдете каталог с именем «documents» со всеми его файлами. Папка «documents» создается автоматически.

SCP – отключить сообщения о ходе выполнения

Если вы решите не видеть индикатор выполнения и предупреждающие/диагностические сообщения от SCP, вы можете отключить их с помощью параметра «-q». Вот пример.

scp -q Label.pdf [email :.

[email 's password:
pungki@mint ~/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/proxyauth», который содержит.

myusername:mypassword

После этого вы можете выполнять SCP прозрачно, как обычно.

Обратите внимание, что штопор может еще не установлен в вашей системе. На моем Linux Mint мне нужно сначала установить его, используя стандартную процедуру установки Linux Mint.

apt-get install corkscrew

В других системах на основе yum пользователи могут установить штопор с помощью следующей команды yum.

yum install corkscrew

Другое дело, что файл «~/.ssh/proxyauth» содержит ваши «имя пользователя» и «пароль» в текстовом формате. , убедитесь, что доступ к файлу можете получить только вы.

Выберите другой файл ssh_config

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

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

scp -F /home/pungki/proxy_ssh_config Label.pdf

[email :.
[email 's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13

По умолчанию файл «ssh_config» для каждого пользователя будет помещен в «~/.ssh/config». Создание специального файла «ssh_config» с совместимостью с прокси-сервером облегчит переключение между сетями.

Находясь в сети компании, вы можете использовать параметр «-F». Когда вы находитесь в общедоступной сети, вы можете пропустить параметр «-F».

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