rsync как другой пользователь

rsync как другой пользователь

когда я запускаю следующую команду как обычный пользователь, все работает правильно:

fabio@myclient:~$ rsync -rv myserver:~/backup /home/fabio/backup/

Он работает без какого-либо взаимодействия с пользователем, но мне нужно запустить скрипт, выполняемый от имени root, поэтому я попробовал:

root@myclient:~# sudo -u fabio rsync -rv myserver:~/backup /home/fabio/backup/

и также пробовал:

root@myclient:~# su - fabio -c "rsync -rv myserver:~/backup /home/fabio/backup"

оба варианта работают, но если у меня спрашивают «парольную фразу для ключа», можно ли этого избежать?

решение1

«Парольная фраза для ключа», скорее всего, исходит от SSH, а не от rsyncили sudo, который запрашивает пароль для разблокировки вашего закрытого ключа SSH.

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

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

Если это не так, если скрипт должен запускаться автономно без какой-либо интерактивной аутентификации с вашей стороны, рассмотрите возможность создания пары ключей специально для скрипта резервного копирования, а затем ограничения его возможностей, либо заставив его аутентифицироваться как другой пользователь на удаленной стороне (т. е. не fabio, а, например, fabio-backup), либо ограничив его аргументом command=в вашем .authorized_keysфайле на удаленной стороне (хотя это немного сложнее, так как требует просмотра SSH_ORIGINAL_COMMANDпеременной среды; см.авторизованные_ключи(5)для подробностей)

решение2

Ваш закрытый ключ ssh защищен парольной фразой. Когда вы запускаете его вручную как (вошедший в систему)пользователь, он использует ssh-агент, где вы когда-то хранили парольную фразу.

Однако при запуске без присмотра этого не происходит — в конце концов, пользователь может даже не войти в систему (и, следовательно, его хранилище ключей недоступно). Чтобы это всегда работало, вам нужно удалить парольную фразу из вашего закрытого ключа ssh (через ssh-keygen -pвход в систему как пользователь fabio— просто нажмите Enter для получения нового пароля, и он должен быть удален).

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

Связанный контент