Запустите несколько команд rsync через ssh и введите ssh passphrase только один раз - PullRequest
0 голосов
/ 11 мая 2019

Я синхронизирую несколько папок между iMac и Synology NAS с помощью нескольких вызовов rsync, содержащихся в сценарии. Как добавить ssh с закрытым / открытым ключом и парольной фразой, чтобы при запуске скрипта мне приходилось вводить только парольную фразу, но все команды rsync используют безопасный туннель ssh?

rsync -rtv --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r --delete --exclude='.*' /Users/Username/FolderName/ username@ipaddress::Foldername/

Это шаблон для каждого вызова rsync без ssh. Имя папки отличается в каждом вызове rsync.

Я могу сгенерировать закрытый / открытый ключ ssh с помощью ключевой фразы, загрузить открытый ключ в NAS и включить его в файл author_keys. Я понимаю синтаксис для добавления ssh к командам rsync. Я понятия не имею, как с помощью скрипта введите пароль только один раз для 7 команд rsync, которые выполняются в скрипте. Будем благодарны за любой вклад, который укажет мне правильное направление.

1 Ответ

1 голос
/ 12 мая 2019

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

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

...