Como eu salvo uma frase secreta de chave SSH para um processo autônomo?

2

Eu criei a chave RSA protegida por senha. A chave pública é instalada no servidor remoto em authorized_keys no diretório .ssh do usuário.

A partir do servidor solicitante, posso enviar o SSH para o servidor remoto sem problemas, mas preciso inserir a frase toda vez que faço isso.

Eu quero usar essa chave para um servidor Munin para SSH em um nó Munin e obter dados, então o procedimento falha por causa da frase secreta.

Eu pensei em duas opções:

  1. Remova a frase secreta da chave.
  2. Salve a senha em algum lugar, talvez em um arquivo de configuração?

Existe uma solução melhor?

Acho que ssh-agent deve fazer algo assim, mas não consigo encontrar informações concisas sobre isso.

    
por David Edwards 14.04.2014 / 15:31

1 resposta

2

Você pode usar ssh-agent para fazer isso. Ele permite que você armazene uma frase secreta na memória, em vez de no disco. Há uma boa explicação de como fazer isso para trabalhos em lote aqui: link .

Essencialmente, você:

  1. Execute ssh-agent em segundo plano como o usuário que iniciará a conexão SSH.
  2. Use o comando ssh-add para adicionar a chave ao agente. Ele solicitará a frase secreta.

Você pode automatizar a execução de ssh-agent adicionando-o a um script executado na inicialização, mas ainda é necessário preparar manualmente o agente com a chave para inserir a frase secreta. Então, se você reiniciar, por exemplo, terá que se lembrar de fazer isso.

O ponto a considerar é o que você está tentando alcançar com uma frase-senha na chave sendo usada, já que esse é um sistema automatizado.

  1. Se você usar uma chave com uma frase secreta e armazená-la em um arquivo de configuração, qualquer pessoa que obtiver acesso à chave provavelmente também terá acesso ao arquivo de configuração, pois ambos precisarão ser acessados pelo mesmo usuário.
  2. Se você usar ssh-agent para armazenar a frase secreta, ela ainda precisará ser executada na mesma máquina que a chave. Seria mais difícil obter a frase secreta de memória do que de um arquivo, mas você acabou de tornar o trabalho mais difícil do que impossível impossível. No entanto, se eles obtiverem a chave sem obter acesso à máquina (por exemplo, de um backup), essa opção será mais segura.
  3. Se você não definir uma frase secreta, alguém que receber a chave não terá mais trabalho a fazer para usá-la.

Em todos esses três cenários, seria sensato planejar o pior e tomar medidas para minimizar os danos que poderiam ser causados por alguém que ganha acesso a uma chave utilizável. Por exemplo, você poderia:

  • Use uma conta de usuário específica que tenha acesso apenas aos dados que estão sendo recuperados.
  • Use uma chave usada apenas para essa finalidade.
  • Restrinja de qual host o proprietário da chave pode usar o SSH.
  • Restringir quais comandos podem ser executados usando a chave - consulte this .

Em suma, só você pode avaliar os prós e contras dessas abordagens e se um processo manual é aceitável em sua situação.

    
por David Edwards 14.04.2014 / 17:03