SSH и необслуживаемые процессы - PullRequest
0 голосов
/ 15 июня 2011

У меня есть сборка Ant, которая иногда выполняет команду git push в каталоге на моем сервере. Я могу сделать это нормально в интерактивном режиме, потому что он запрашивает пароль для моего ключа, но это становится проблематичным, если вы настроили задание cron для запуска сборки без присмотра.

Есть ли варианты для меня, кроме того, чтобы не использовать фразу-пароль? Я слышал об использовании ssh-agent, но я также слышал, что для автоматических процессов этот маршрут не будет работать. У кого-нибудь есть какие-либо рекомендации для этого и, возможно, пример того, как это реализовать?

Я видел, что кто-то предложил запустить cron в качестве демона: Доступ к SSH-ключу из bash-скрипта, выполняемого через задание cron - но я не уверен, как я мог это сделать или вставить мою фразу-пароль, не ставя ее под угрозу, положив ее в виде простого текста и т. Д.

Любая помощь с благодарностью.

Ответы [ 2 ]

0 голосов
/ 15 июня 2011

Во-первых, настройте себя для входа без пароля.

Используйте ssh-keygen для генерации пары открытый / закрытый ключ с паролем без . Добавьте открытый ключ к ~ / .ssh / авторизованному ключу на сервере.

Затем запустите ssh -i /path/to/private_key server, чтобы убедиться, что логин без пароля работает.

Наконец, сконфигурируйте git для использования этой ssh -i ... команды .

Как подсказывает @mah, вы можете захотеть создать определенную учетную запись git на сервере. Вы добавляете открытый ключ в ~ git / .ssh / authorized_keys, чтобы разрешить вход без пароля.

authorized_keys также имеет опции для ограничения команд, которые может выполнять входящее соединение. Если вас интересуют эти функции, прочтите документацию по SSH.

И, конечно, вы хотите, чтобы файл закрытого ключа читался только вами.

0 голосов
/ 15 июня 2011

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

...