2014-11-07 3 views
1

Я использую Puppet, и я хочу вытащить Git repos через cronjobs с определенным пользователем. У меня есть секретный ключ, расположенный в моем каталоге ~/.ssh, который я добавляю к моему SSH-агента с этим Exec:Запуск ssh-agent через куклу

exec { 
    'add-ssh-key': 
    cwd => '/home/user/.ssh', 
    command => "bash -c 'eval $(ssh-agent) ssh-add rsa_key'", 
    path => '/usr/bin:/usr/sbin:/bin:/sbin', 
    provider => 'shell' 
    } 

Согласно положению было запущено средство и личность добавляется к агенту. Однако я не могу вытащить репо (и не может cronjob), потому что я, вероятно, не подключен к правильному ssh-agent (при потере его запрашивает пароль).

Есть ли другой способ сделать это?

Благодаря

ответ

2

Вы можете добавить раздел в файл пользователя ~/.ssh/config инструктировать его использовать ключ при подключении к серверу git.

Host my-git-server 
    Hostname git.example.net 
    User gituser 
    IdentityFile /home/user/.ssh/rsa_key 

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

Не нужно привлекать ssh-agent.

+0

Я уже сделал это. Я создал идентичный конфигурационный файл в .ssh /, и я установил разрешение на закрытие ключа на 600. Но когда я пытаюсь вытащить репо, он продолжает просить пароль, и единственным решением, которое я нашел, чтобы обойти это, является добавление ключа к ssh -agent. – Pulz

+1

Хорошо, по какой-то причине он работает только тогда, когда я называю свой ключ «id_rsa». Но так как вы использовали «rsa_key» в своем примере, я полагаю, что это должно работать с любым именем? – Pulz

+0

Поскольку 'id_rsa' является ключом по умолчанию, который' ssh' будет использовать, я полагаю, что ваша конфигурация даже не используется. Я взял имя файла 'rsa_key' из вашего вопроса, считая, что это имя файла. - Простое развертывание закрытого ключа на '~/.ssh/id_rsa' действительно самый простой и безопасный подход. –

Смежные вопросы