Мне нужно, чтобы сценарий периодически загружал файлы rsync с удаленного хоста через ssh. У учетной записи, под которой запускается сценарий, нет домашнего каталога на удаленном хосте, поэтому я не могу хранить свой открытый ключ на удаленном хосте. Я счастлив сохранить свой пароль в файле на моем локальном хосте, но мне не удается заставить rsync использовать пароль.
В --password-file
Параметр - это только вариант для подключения к демону rsync, а запрос пароля не считывается из стандартного ввода.
Ищите программу sshpass
в вашем раздаче. Как только вы его получите, вы сможете:
rsync –e 'sshpass -f passwordfile ssh -l user' host:path
или, поместив все в один файл:
rsync –e 'sshpass -d 300 ssh -l user' host:path 300<<<'password'
Возможно, вы захотите изменить AuthorizedKeysFile
опция в удаленном сервере sshd_config
, если это возможно, вы можете настроить там свой открытый ключ без домашнего каталога. В этом случае это будет что-то вроде /home/%u/.ssh/authorized_keys
, чтобы минимизировать потенциальные конфликты с другими пользователями в системе.
Вы смотрели на использование ожидать?