Como faço para adicionar ssh uma chave protegida ao ssh-agent para minhas instâncias de IC do Jenkins?

2

Eu gerencio um servidor de CI Jenkins rodando no Ubuntu 14.04 com alguns requisitos:

  • Os trabalhos usam autenticação de chave pública / privada para segurança, portanto, uma identidade deve ter sido adicionada ao agente ssh antes de executá-los
  • Nossos arquivos de chave privada devem ser protegidos por senha
  • Não podemos armazenar essa senha em um local inseguro (como um código-fonte de script ou arquivos de configuração do Jenkins)

Idealmente, quero adicionar ssh e inserir a frase secreta na ordem de uma vez por reinicialização. Mas não consigo descobrir como fazer com que o Jenkins CI execute seus trabalhos de uma forma que leve vantagem desta autenticação.

É possível fazer com que Jenkins aproveite as identidades adicionadas a um agente ssh antecipadamente?
Existe uma estratégia alternativa que não estou vendo aqui?

    
por Chris Betti 23.05.2014 / 20:01

1 resposta

2

Execute ssh-agent com um caminho de soquete estático, sob o mesmo UID que o Jenkins usa:

sudo -u jenkins ssh-agent -a /tmp/ssh-agent.jenkins

Certifique-se de que a variável de ambiente $SSH_AUTH_SOCK aponte para esse caminho. Você vai querer configurá-lo 1) manualmente antes do ssh-add'ing suas chaves, e 2) no script de inicialização do Jenkins (por exemplo, /etc/init.d/jenkins ou equivalente):

export SSH_AUTH_SOCK="/tmp/ssh-agent.jenkins"

sudo -E -u jenkins ssh-add ...
    
por 23.05.2014 / 21:21