14 примеров команд SCP для безопасной передачи файлов в Linux

14 примеров команд SCP для безопасной передачи файлов в Linux

 

SCP (Secure Copy) — это инструмент командной строки в Linux и Unix-подобных системах, который используется для безопасной передачи файлов и каталогов между системами по сети. Когда мы используем команду scp для копирования файлов и каталогов из нашей локальной системы в удаленную систему, тогда в бэкэнде она устанавливает ssh-соединение с удаленной системой. Другими словами, мы можем сказать, что scp использует тот же механизм безопасности SSH в бэкэнде, ему нужен либо пароль, либо ключи для аутентификации.

В этом руководстве мы обсудим команду scp в Linux с практическими примерами.

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

# scp <options> <files_or_directories> user@target_host:/<folder>

# scp <options> user@target_host:/files <folder_local_system>

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

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

Некоторые из наиболее широко используемых параметров в команде scp перечислены ниже.

  •  -C Включить сжатие
  •  -i файл идентификации или закрытый ключ
  •  -l ограничить пропускную способность при копировании
  •  -P номер порта ssh целевого хоста
  •  -p Сохраняет разрешения, режимы и время доступа к файлам при копировании
  •  -q Подавить предупреждающее сообщение о SSH
  •   -r Рекурсивно копировать файлы и каталоги
  •   -v подробный вывод

Давайте теперь перейдем к примерам !!!!

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

Предположим, мы хотим скопировать пакет jdk rpm из нашей локальной системы Linux в удаленную систему (172.20.10.8) с помощью команды scp, используйте следующую команду,

[root@infoit.com.ua ~]$ scp jdk-linux-x64_bin.rpm root@172.20.10.8:/opt
[root@infoit.com.ua ~] password:
jdk-linux-x64_bin.rpm                          100%   10MB  27.1MB/s   00:00
[root@infoit.com.ua ~]$

Вышеупомянутая команда скопирует файл пакета jdk rpm в удаленную систему в папку /opt.

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

Предположим, мы хотим скопировать файл из удаленной системы в нашу локальную систему в папке /tmp, выполните следующую команду scp,

[root@infoit.com.ua ~]$ scp root@172.20.10.8:/root/Technical-Doc-RHS.odt /tmp
[root@infoit.com.ua ~] password:
Technical-Doc-RHS.odt                         100% 1109KB  31.8MB/s   00:00
[root@infoit.com.ua ~]$ ls -l /tmp/Technical-Doc-RHS.odt
-rwx------. 1 pkumar pkumar 1135521 Oct 19 11:12 /tmp/Technical-Doc-RHS.odt
[root@infoit.com.ua ~]$

Пример 3) Подробный вывод при передаче файлов с помощью scp (-v)

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

[root@infoit.com.ua ~]$ scp -v jdk-linux-x64_bin.rpm root@172.20.10.8:/opt
Executing: program /usr/bin/ssh host 172.20.10.8, user root, command scp -v -t /opt
OpenSSH_7.8p1, OpenSSL 1.1.1 FIPS  11 Sep 2018
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Reading configuration data /etc/ssh/ssh_config.d/05-redhat.conf
debug1: Reading configuration data /etc/crypto-policies/back-ends/openssh.config
debug1: /etc/ssh/ssh_config.d/05-redhat.conf line 8: Applying options for *
debug1: Connecting to 172.20.10.8 [172.20.10.8] port 22.
debug1: Connection established.
…………
debug1: Next authentication method: password
root@infoit.com.ua's password:

Пример 4) Передача нескольких файлов в удаленную систему

Несколько файлов можно скопировать / передать в удаленную систему с помощью команды scp за один раз, в команде scp укажите несколько файлов, разделенных пробелом, пример показан ниже

[root@infoit.com.ua ~]$ scp install.txt index.html jdk-linux-x64_bin.rpm \
 root@172.20.10.8:/mnt
root@infoit.com.ua's password:
install.txt                                      100%    0     0.0KB/s   00:00
index.html                                       100%   85KB   7.2MB/s   00:00
jdk-linux-x64_bin.rpm                            100%   10MB  25.3MB/s   00:00
[root@infoit.com.ua ~]$

Пример 5) Передача файлов между двумя удаленными хостами

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

Синтаксис:

# scp user@remote_hosts1:/<files_to_transfer> user@remote_host2:/<folder>

Пример показан ниже,

# scp root@172.20.10.9:~/backup-Oct.zip root@172.20.10.8:/tmp
# ssh root@172.20.10.8 "ls -l /tmp/backup-Oct.zip"
-rwx------. 1 root root 747438080 Oct 19 12:02 /tmp/backup-Oct.zip

Пример 6) Рекурсивное копирование файлов и каталогов (-r)

Используйте параметр -r в команде scp для рекурсивного копирования всего каталога из одной системы в другую, пример показан ниже,

[root@infoit.com.ua ~]$ scp -r Downloads root@172.20.10.8:/opt

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

[root@infoit.com.ua ~]$ ssh root@172.20.10.8 "ls -ld /opt/Downloads"
drwxr-xr-x. 2 root root 75 Oct 19 12:10 /opt/Downloads
[root@infoit.com.ua ~]$

Пример 7) Увеличьте скорость передачи, включив сжатие (-C)

В команде scp мы можем увеличить скорость передачи, включив сжатие с помощью опции -C, она автоматически включит сжатие в источнике и декомпрессию на хосте назначения.

 [root@infoit.com.ua~]$ scp -r -C Downloads root@172.20.10.8:/mnt

В приведенном выше примере мы переносим каталог Download с включенным сжатием.

Пример 8) Ограничение пропускной способности при копировании (-l)

Используйте параметр ‘-l’ в команде scp, чтобы установить ограничение на использование полосы пропускания при копировании. Пропускная способность указывается в Кбит / с, пример показан ниже,

[root@infoit.com.ua ~]$ scp -l 500 jdk-linux-x64_bin.rpm  root@172.20.10.8:/var

Пример 9) Укажите другой порт ssh, а scp (-P)

Могут быть некоторые сценарии, когда порт ssh изменяется на целевом хосте, поэтому при использовании команды scp мы можем указать номер порта ssh с помощью опции -P.

[root@infoit.com.ua ~]$ scp -P 2022 jdk-linux-x64_bin.rpm  root@172.20.10.8:/var

В приведенном выше примере порт ssh для удаленного хоста — «2022».

Пример 10) Сохраняет разрешения, режимы и время доступа к файлам при копировании (-p)

Используйте параметр «-p» в команде scp, чтобы сохранить разрешения, время доступа и режимы при копировании из источника в место назначения

[root@infoit.com.ua ~]$ scp -p jdk-linux-x64_bin.rpm  root@172.20.10.8:/var/tmp
jdk-linux-x64_bin.rpm                            100%   10MB  13.5MB/s   00:00
[root@infoit.com.ua ~]$

Пример 11) Передача файлов в тихом режиме (-q) в scp

Используйте опцию ‘-q’ в команде scp, чтобы подавить ход передачи, предупреждения и диагностические сообщения ssh. Пример показан ниже,

[root@infoit.com.ua ~]$ scp -q -r Downloads root@172.20.10.8:/var/tmp
[root@infoit.com.ua ~]$

Пример 12) Использование файла Identify в scp при передаче (-i)

В большинстве сред Linux предпочтительна аутентификация на основе ключей. В команде scp мы указываем файл идентификации или файл закрытого ключа с помощью опции ‘-i’, пример показан ниже,

[root@infoit.com.ua ~]$ scp -i my_key.pem -r Downloads root@172.20.10.8:/root

В приведенном выше примере «my_key.pem» — это файл идентификации или файл закрытого ключа.

Пример 13) Используйте другой файл ssh_config в scp (-F)

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

Другой файл ssh_config в команде scp указывается с помощью опции ‘-F’, пример показан ниже

[root@infoit.com.ua ~]$ scp -F /home/pkumar/new_ssh_config -r Downloads \ 
root@infoit.com.ua:/root
root@infoit.com.ua's password:
jdk-linux-x64_bin.rpm                     100%   10MB  16.6MB/s   00:00
backup-Oct.zip                            100%  713MB  41.9MB/s   00:17
index.html                                100%   85KB   6.6MB/s   00:00
[root@infoit.com.ua ~]$

Пример 14) Использование другого шифра в команде scp (-c)

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

Предположим, мы хотим использовать шифр 3des-cbc в команде scp при передаче файлов, выполните следующую команду scp

[root@infoit.com.ua ~]# scp -c 3des-cbc -r Downloads root@172.20.10.8:/root

Используйте команду ниже, чтобы вывести список шифров ssh и scp,

[root@infoit.com.ua ~]# ssh -Q cipher localhost | paste -d , -s -
3des-cbc,aes128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,\
aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,\
chacha20-poly1305@openssh.com
[root@infoit.com.ua ~]#

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