--noaskオプションを指定したキーチェーンを使用してSSHキーパスフレーズを保存する


10

キーチェーンを使用してSSHキーのパスフレーズプロンプトを管理したいのですが、1)実際にキーを使用している場合にのみ質問し、2)その後しばらく保存する必要があります。現在2つのオプションがあります。

  1. $ eval `keychain --eval --agents ssh id_rsa` -起動時に常にパスフレーズを要求しますが、それを保存します。
  2. $ eval `keychain --eval --noask --agents ssh id_rsa` -これは起動時に何も要求しませんが、そのキーを使用するたびにパスフレーズを要求し続けます。

これらの方法の利点を組み合わせる方法はありますか?

回答:


9

ssh-agentOpenSSHのの最近のバージョンでは、それを簡単に:

  1. ssh-agent追加されたキーのデフォルトのタイムアウト(通常は60分)で通常どおり開始します。

    eval `ssh-agent -t 60m`
    
  2. ssh実際に使用するキーをエージェントに追加するようにを設定します。〜/ .ssh / config`に新しい行を追加します:

    AddKeysToAgent yes
    

    この機能は最新のOpenSSH 7.2に含まれています。以前のバージョンでは、タイムアウトを超えた場合は、キーをエージェントに手動で追加する必要がありますが、bash関数を使用して次のように簡単に自動化できます。

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

    アイデア:バッチモードでキーを使用して接続を試み(キーがそこにない場合、パスフレーズのプロンプトは表示されず、失敗します)、失敗したら、エージェントにキーを追加してsshコマンドを再実行します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.