Salve senha com chave SSH usando chaveiro com opção --noask

8

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

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

Existe alguma maneira de combinar as vantagens desses métodos?

    
por anlar 24.07.2016 / 16:08

1 resposta

7

As versões ssh-agent e recentes do OpenSSH simplificam:

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

    eval 'ssh-agent -t 60m'
    
  2. Configure seu ssh para adicionar as chaves realmente usadas ao agente. Adicione uma nova linha em ~ / .ssh / config ':

    AddKeysToAgent yes
    

    Este 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 pode ser simplesmente automatizado usando a função bash, algo assim:

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

    A ideia: tente se conectar usando a chave no modo batch (não solicitará passphrase e falhará, se a chave não estiver lá) e, após uma falha, adicione a chave ao agente e execute novamente o comando ssh.

por 24.07.2016 / 19:36

Tags