16.3. Безопасная пересылка данных с применением SSH

Проблема

Требуется использовать rsync для копирования файлов на другой компьютер по локальной сети или Интернету с защитой пересылаемых данных посредством шифрования и аутентификации.

Решение

Используйте rsync на базе SSH. Для этого на всех хостах должна быть установлена и запущена программа SSH.

Укажите исходный и приёмный каталог и добавьте параметр -e ssh в командную строку. Следующая команда пересылает файлы по локальной сети в учётную запись ljl на удалённом компьютере с именем stinkpad:

ljl@compak:~$ rsync -av -e ssh stationery stinkpad:test
ljl@stinkpad's password:
building file list... done
stationery/
stationery/ljl-return-address-small.sxw
stationery/ljl-holiday-label.sxw
stationery/ljl-return-address-small.sxw
wrote 25984 bytes  read 68 bytes  7443.43 bytes/sec
total size is 25666  speedup is 0.99

Будьте внимательны с путями. Параметр stinkpad:test загружает каталог stationery и всё его содержимое в каталог /home/ljl/test на хосте stinkpad. Если каталог /test не существует, rsync создаст его:

ljl@stinkpad's password:
building file list... done
created directory test

Чтобы загрузить данные в каталог, находящийся за пределами вашего домашнего каталога, требуются права, достаточные для создания нового каталога программой rsync (или это должен быть существующий каталог, в который вам разрешена запись). Чтобы каталог задавался относительно корневой файловой системы, поставьте перед ним символ /:

$ rsync -av -e ssh stationery stinkpad:/shared_uploads

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

$ rsync -av -e ssh stationery ljl@stinkpad.test.net:/shared_uploads

Синтаксис копирования файлов с удалённого хоста отличается. Следующая команда копирует каталог /scripts и его содержимое с удалённого хоста в локальный каталог /downloads:

$ rsync -av -e ssh ljl@stinkpad.test.net:/shared_uploads/scripts /downloads/

Комментарий

И аутентификация, и пересылка шифруются, поэтому механизм rsync хорошо подходит для передачи конфиденциальной информации. Единственное неудобство — пользователи должны иметь учётные записи на всех компьютерах, на которых они будут сохранять или загружать файлы, что создаёт дополнительные хлопоты с настройкой. Центральный сервер с общими каталогами идеально подходит для управления сложными сценариями совместного доступа к файлам. Для управления доступом можно использовать стандартные инструменты Linux — права на файлы и каталоги, группы.

См. также

rsync(1)