Salva la passphrase della chiave SSH usando il portachiavi con l'opzione --noask


10

Voglio usare il portachiavi per gestire il prompt passphrase per le chiavi SSH, ma dovrebbe 1) chiederlo solo quando sto effettivamente usando la chiave e 2) salvarlo per un certo periodo di tempo dopo. Attualmente ho 2 opzioni:

  1. $ eval `keychain --eval --agents ssh id_rsa` - che chiederà sempre la passphrase all'avvio ma poi la salverà.
  2. $ eval `keychain --eval --noask --agents ssh id_rsa` - che non chiederà nulla all'avvio ma continuerà a chiedere la passphrase ogni volta che userò quella chiave.

Esiste un modo per combinare i vantaggi di questi metodi?

Risposte:


9

Le ssh-agentversioni recenti di OpenSSH lo rendono semplice:

  1. Inizia normalmente ssh-agentcon il timeout predefinito per le chiavi aggiunte (ad esempio 60 minuti):

    eval `ssh-agent -t 60m`
    
  2. Configura il tuo sshper aggiungere le chiavi effettivamente utilizzate all'agente. Aggiungi una nuova riga a ~ / .ssh / config`:

    AddKeysToAgent yes
    

    Questa funzione è disponibile nell'ultimo OpenSSH 7.2. Nelle versioni precedenti, è necessario aggiungere manualmente la chiave all'agente, se il timeout viene superato, ma può essere semplicemente automatizzato utilizzando la funzione bash, qualcosa del genere:

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

    L'idea: provare a connettersi utilizzando la chiave in modalità batch (non verrà richiesta la passphrase e non riuscirà, se la chiave non è presente) e in caso di errore, aggiungere la chiave all'agente ed eseguire nuovamente il comando ssh.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.