Я использую rsync для развертывания кода на удаленном сервере, и в настоящее время у меня есть кодовая фраза для ключа безопасности. Как я могу добавить кодовую фразу в команду rsync без приглашения использовать ее в сценарии?
Я не использую rsync-daemon.
Моя команда:
rsync -vaz -e "ssh -i /root/.ssh/key.ppk" --chmod=ugo=rwX --omit-dir-times --no-perms . user@domain.com:/var/www/html
Сделайте вашу безопасность независимой от пароля закрытого ключа, вместо этого ограничив использование ключа на стороне сервера:
rrsync
доступный. (Обычно он устанавливается с пакетом rsync, вероятно, в /usr/share/doc/rsync-VERSION/support
.command="/path/to/rrsync /var/www/html/",no-pty,no-port-forwarding,no-user-rc,no-X11-forwarding,no-agent-forwarding,from="IPADRESS" ssh-rsa AAA[...]
Теперь у вас есть ключ, который можно использовать только для одной цели - для синхронизации всего с одного сервера в каталог / var / www / html. Ограничения на стороне сервера означают, что даже если кто-то другой завладеет ключом, разрушение, которое он может нанести, очень ограничено и, конечно, намного меньше, чем если бы они завладели паролем к ключу, который обеспечивает полный доступ.
Вы можете сохранить ключ ssh на диске с парольной фразой и, когда хост загружается, разблокировать ключ в ssh-agent.
Затем при запуске rsync убедитесь, что установлены правильные переменные среды, позволяющие использовать агент.
При загрузке вручную:
ssh-agent >$HOME/.ssh/agent_env # will start a new ssh agent and store the details
. $HOME/.ssh/agent_env # will load the stored environment into this shell
ssh-add $HOME/.ssh/key.ppk # will prompt for passphrase
Затем при запуске rsync используйте небольшой сценарий-оболочку для источника agent_env
файл, как указано выше:
#!/bin/sh
if [ ! -e $HOME/.ssh/agent_env ]
then
No ssh agent details
exit 1
fi
. $HOME/.ssh/agent_env
rsync ...
Конечно, есть @reboot
cron для пользователя root по удалению $HOME/.ssh/agent_env
файл:
@reboot rm $HOME/.ssh/agent_env
Вы говорите, что у вас есть открытый ключ, установленный на удаленном сервере, для которого требуется пароль (т.е. ключ RSA, созданный процессом генерации ключей ssh)?
Если да, пробовали ли вы какой-либо из этих двух методов?
Как выглядит результат, когда вы пытаетесь это сделать? У меня есть коллега, который написал много таких сценариев за свою карьеру, поэтому я могу спросить его, есть ли у меня пример того, что вы видите.
Дай мне знать.