Как я могу использовать rsync
с парольными фразами? Все найденные мною «решения», которые я обнаружил, используют ключи без парольной фразы, что, похоже, не подходит.
Я работаю на 2 серверах Ubuntu 12.04.2 LTS.
Если вы используете rsync с обычным пользователем, ssh-agent может быть тем, что вы ищете.
Если столкнулся с этой проблемой при использовании rsync в задании cron. Задания Cron выполняются пользователем cron в ограниченной среде (некоторые env var, такие как SSH_AUTH_SOCK, отсутствуют, поэтому ssh-agent не работает).
Пошаговое руководство заключается в использовании брелка . Связка ключей хранит переменные окружения ssh-agent в файле.
Итак, сначала вы устанавливаете связку ключей.
Затем вы добавляете эти строки в ваш файл .bashrc, .zshrc или .profile (подправьте его так, чтобы он соответствовал вашим ключам ssh):
/usr/bin/keychain $HOME/.ssh/id_rsa
source $HOME/.keychain/${HOSTNAME}-sh
Дополнительно, чтобы заставить работать задания cron Вы можете добавить эту строку в начале ваших скриптов cron:
source $HOME/.keychain/${HOSTNAME}-sh
Дополнительная информация в этой статье: http://eli.thegreenplace.net/2013/10 / 08 / некоторые струн-на-каротажа и-SSH-доступ из-хрона-заданий /
rsync -Pavp --rsh="ssh -i YOUR_KEY" DEST USER@REMOTE:SOURCE
Я нашел идеальный ответ на этот вопрос в https://stackoverflow.com/questions/3299951/how-to-pass-password-for-rsync-ssh-command
Это сработало идеально для меня. Как говорит Кейнджоу, это риск для безопасности, но он решает проблему.
Ответ kainjow:
Если вы не можете использовать открытый / закрытый ключи, вы можете использовать ожидаемый:
blockquote>#!/usr/bin/expect spawn rsync SRC DEST expect "password:" send "PASS\n" expect eof if [catch wait] { puts "rsync failed" exit 1 } exit 0
Вы потребуется заменить SRC и DEST на ваши обычные параметры источника и назначения rsync и заменить PASS вашим паролем. Просто убедитесь, что этот файл надежно хранится!
blockquote>
Полагаю, все, что вам нужно, это параметр -e, чтобы rsync использовал ssh-соединение, которое автоматически запрашивает вашу фразу-пароль ...
rsync -avze ssh /home/user remoteuser@example.com:/backups
Это скопирует / home / user с вашего локального компьютера в каталог удаленных компьютеров / резервных копий