Speichern Sie die SSH-Schlüsselpassphrase mithilfe des Schlüsselbunds mit der Option --noask

10

Ich möchte den Schlüsselbund verwenden, um die Passphrase-Eingabeaufforderung für SSH-Schlüssel zu verwalten, aber es sollte 1) nur gefragt werden, wenn ich den Schlüssel tatsächlich verwende, und 2) danach für einige Zeit gespeichert werden. Derzeit habe ich 2 Optionen:

  1. $ eval `keychain --eval --agents ssh id_rsa` - das fragt beim Start immer nach der Passphrase, speichert sie dann aber.
  2. $ eval `keychain --eval --noask --agents ssh id_rsa` - Das fragt beim Start nicht nach etwas, sondern fragt jedes Mal, wenn ich diesen Schlüssel benutze, nach einer Passphrase.

Gibt es eine Möglichkeit, die Vorteile dieser Methoden zu kombinieren?

anlar
quelle

Antworten:

9

Die ssh-agentund die neuesten Versionen von OpenSSH machen es einfach:

  1. Beginnen Sie normal ssh-agentmit dem Standardzeitlimit für die hinzugefügten Schlüssel (z. B. 60 Minuten):

    eval `ssh-agent -t 60m`
    
  2. Konfigurieren Sie Ihre ssh, um dem Agenten tatsächlich verwendete Schlüssel hinzuzufügen. Fügen Sie ~ / .ssh / config` eine neue Zeile hinzu:

    AddKeysToAgent yes
    

    Diese Funktion ist in der neuesten Version von OpenSSH 7.2 enthalten. In den vorherigen Versionen müssen Sie den Schlüssel manuell zum Agenten hinzufügen, wenn Ihr Timeout überschritten wird. Er kann jedoch ganz einfach mithilfe der Bash-Funktion automatisiert werden.

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

    Die Idee: Versuchen Sie, eine Verbindung mit dem Schlüssel im Batch-Modus herzustellen (fordert nicht zur Passphrase auf und schlägt fehl, wenn der Schlüssel nicht vorhanden ist). Fügen Sie bei einem Fehler den Schlüssel zum Agenten hinzu und führen Sie den Befehl ssh erneut aus.

Jakuje
quelle