Guarde la frase de contraseña de la clave SSH usando el llavero con la opción --noask

10

Quiero usar el llavero para administrar el mensaje de frase de contraseña para las claves SSH, pero debería 1) preguntarlo solo cuando realmente esté usando la clave y 2) guardarlo durante un período de tiempo después de eso. Actualmente tengo 2 opciones:

  1. $ eval `keychain --eval --agents ssh id_rsa` - eso siempre solicitará una frase de contraseña al inicio pero luego la guardará.
  2. $ eval `keychain --eval --noask --agents ssh id_rsa` - eso no pedirá nada al inicio, pero luego seguirá pidiendo una frase de contraseña cada vez que use esa clave.

¿Hay alguna forma de combinar las ventajas de estos métodos?

anlar
fuente

Respuestas:

9

Las ssh-agentversiones recientes de OpenSSH lo hacen simple:

  1. Comience normalmente ssh-agentcon el tiempo de espera predeterminado para las claves agregadas (60 minutos, por ejemplo):

    eval `ssh-agent -t 60m`
    
  2. Configure su sshpara agregar claves realmente utilizadas al agente. Agregue una nueva línea a ~ / .ssh / config`:

    AddKeysToAgent yes
    

    Esta característica está en la última versión de OpenSSH 7.2. En las versiones anteriores, debe agregar la clave al agente manualmente, si se excede su tiempo de espera, pero se puede automatizar de manera bastante simple usando la función bash, algo como esto:

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

    La idea: intente conectarse usando la clave en modo por lotes (no solicitará la frase de contraseña y fallará, si la clave no está allí) y, en caso de falla, agregue la clave al agente y vuelva a ejecutar el comando ssh.

Jakuje
fuente