暗号化されたすべての秘密鍵をencfsファイルに保存します。 encfsファイルをフォルダーにマウント(復号化)し、すべての秘密鍵を有効期間フラグを付けてssh-agentに追加し、フォルダーをマウント解除します。この場合、私の秘密鍵ファイルは暗号化されたままであり、ssh-agentを介してそれらにアクセスできました。
キーリストが大きくなり、「%username%の認証エラーが多すぎます」というメッセージが表示されるようになりました。回避策を検索しました。一般的なアドバイスは、〜/ .ssh/configで各IdentityFileを指定することです。
Host hostalias
Hostname my.Host.name
User username
IdentityFile ~/.ssh/unencrypted_key
ただし、この場合、sshが直接アクセスするため(ssh-agentを無視して)、キーは常に暗号化されていない状態で保存する必要があります。
どのホストに(ssh-agentからの)どのプライベートsshキーを使用するかを指定するための可能な解決策はありますか?
P.S.各キーには独自のフィンガープリントがあり、構成で指定することでこれを解決できると思いました(次のようなもの)。
Host hostalias
Hostname my.Host.name
User username
IdentityFingerPrint 0c:d6:e6:64:0f:b5:1f:29:11:51:12:74:90:55:49:ae
しかし、私は似たようなものを見つけていません。
まず、SSH秘密鍵ファイルは、encfsなどの追加ツールを使用せずに、パスフレーズ自体で暗号化できることに注意してください。 ssh-keygen -f <file> -p
を使用すると、パスフレーズが設定されます。 (最近のOpenSSHバージョンでは、これにAES-128-CBCが使用されています。)
ただし、両方のIdentityFile
およびエージェントを実行している場合、sshは、使用するキーを選択する際のヒントとしてファイルを使用するだけです。そのためには、キーの公開されている半分をチェックするだけで済みます。したがって、公開鍵が対応する.pub
ファイルに抽出されている限り、鍵を復号化しておく必要はありません。これはデフォルトで実行されますが、ssh-keygen -f <file> -y
を使用して繰り返すことができます。