Red Hat System Administration I 8.2

Безопасная передача файлов между системами

Задачи

После завершения этого раздела вы сможете безопасно передавать файлы в удаленную систему и из нее с помощью SSH.

Передача файлов с помощью команды scp

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

Вы можете указать удаленное расположение в качестве источника или назначения копируемых файлов. Формат удаленного расположения должен быть следующим: [user@]host:/path. Часть user@ аргумента необязательна. Если она отсутствует, будет использоваться имя текущего локального пользователя. При выполнении этой команды клиент scp проходит аутентификацию на удаленном SSH-сервере (как и в случае команды ssh) с использованием ключей или пароля.

В следующем примере показано, как безопасно копировать локальные файлы /etc/yum.conf и /etc/hosts на хосте host в домашний каталог пользователя remoteuser в удаленной системе remotehost.

[user@host ~]$ scp /etc/yum.conf /etc/hosts remoteuser@remotehost:/home/remoteuser
remoteuser@remotehost's password: password
yum.conf                                   100%  813     0.8KB/s   00:00
hosts                                      100%  227     0.2KB/s   00:00

Вы также можете копировать файл в другом направлении ― из удаленной системы в локальную файловую систему. В этом примере файл /etc/hostname на хосте remotehost копируется в локальный каталог /home/user. Команда scp выполняет аутентификацию на хосте remotehost от имени пользователя remoteuser.

[user@host ~]$ scp remoteuser@remotehost:/etc/hostname /home/user
remoteuser@remotehost's password: password
hostname                                   100%   22     0.0KB/s   00:00

Чтобы рекурсивно копировать все дерево каталогов, используйте опцию -r. В следующем примере выполняется рекурсивное копирование удаленного каталога /var/log на хосте remotehost в локальный каталог /tmp/ на хосте host. Необходимо подключаться к удаленной системе от имени пользователя root, чтобы иметь возможность читать все файлы в удаленном каталоге /var/log.

[user@host ~]$ scp -r root@remoteuser:/var/log /tmp
root@remotehost's password: password
...output omitted...

Передача файлов с помощью команды sftp

Для интерактивной передачи и загрузки файлов с SSH-сервера используйте программу безопасной передачи файлов ― sftp. Сеанс с командой sftp использует безопасный механизм аутентификации и шифрованную передачу данных на SSH-сервер и с него.

Как и в случае команды scp, команда sftp использует [user@]host для идентификации целевой системы и имени пользователя. Если не указать пользователя, команда попытается войти в систему, используя имя локального пользователя в качестве имени удаленного пользователя. Появится приглашение sftp>.

[user@host ~]$ sftp remoteuser@remotehost
remoteuser@remotehost's password: password
Connected to remotehost.
sftp> 

Интерактивный сеанс sftp принимает различные команды, которые работают в удаленной файловой системе так же, как в локальной, например: ls, cd, mkdir, rmdir и pwd. Команда put отправляет файл в удаленную систему. Команда get загружает файл из удаленной системы. Команда exit завершает сеанс sftp.

Чтобы передать локальный файл /etc/hosts из локальной системы в новый каталог /home/remoteuser/hostbackup в системе remotehost, сделайте следующее. Сеанс sftp всегда предполагает, что после команды put следует файл в локальной файловой системе, и запускается в домашнем каталоге подключающегося пользователя (в данном случае /home/remoteuser).

sftp> mkdir hostbackup
sftp> cd hostbackup
sftp> put /etc/hosts
Uploading /etc/hosts to /home/remoteuser/hostbackup/hosts
/etc/hosts                                 100%  227     0.2KB/s   00:00
sftp> 

Чтобы загрузить /etc/yum.conf с удаленного хоста в текущий каталог в локальной системе, выполните команду get /etc/yum.conf, а затем завершите сеанс sftp с помощью команды exit.

sftp> get /etc/yum.conf
Fetching /etc/yum.conf to yum.conf
/etc/yum.conf                              100%  813     0.8KB/s   00:00
sftp> exit
[user@host ~]$ 

Ссылки

Man-страницы scp(1) и sftp(1)