Salvar a senha da chave SSH usando chaveiro com a opção --noask

10

Eu quero usar o chaveiro para gerenciar o prompt de senha para as chaves SSH, mas ele deve 1) perguntar apenas quando realmente estiver usando a chave e 2) salvá-lo por algum período depois disso. Atualmente, tenho 2 opções:

  1. $ eval `keychain --eval --agents ssh id_rsa` - que sempre solicitará a senha na inicialização, mas a salvará.
  2. $ eval `keychain --eval --noask --agents ssh id_rsa` - isso não pedirá nada na inicialização, mas continuará pedindo a senha sempre que eu usar essa chave.

Existe alguma maneira de combinar vantagens desses métodos?

anlar
fonte

Respostas:

9

As ssh-agentversões recentes e recentes do OpenSSH simplificam:

  1. Comece normal ssh-agentcom o tempo limite padrão para as chaves adicionadas (60 minutos, por exemplo):

    eval `ssh-agent -t 60m`
    
  2. Configure seu sshpara adicionar chaves realmente usadas ao agente. Adicione uma nova linha a ~ / .ssh / config`:

    AddKeysToAgent yes
    

    Esse recurso está no mais recente OpenSSH 7.2. Nas versões anteriores, você precisa adicionar a chave ao agente manualmente, se o tempo limite for excedido, mas ele pode ser simplesmente automatizado usando a função bash, algo como isto:

    ssh() {
      /bin/ssh -o BatchMode=yes $* || \
        ssh-add path/to/the-key && /bin/ssh $*
    }
    

    A idéia: tente conectar-se usando a chave no modo em lote (não solicitará a senha e falhará, se a chave não estiver lá) e, após a falha, adicione a chave ao agente e execute novamente o comando ssh.

Jakuje
fonte