web-dev-qa-db-ja.com

「認証の失敗が多すぎる」ことを回避するために、ssh-agentからの秘密鍵のみを使用してください

暗号化されたすべての秘密鍵を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

しかし、私は似たようなものを見つけていません。

3
MoLLIa

まず、SSH秘密鍵ファイルは、encfsなどの追加ツールを使用せずに、パスフレーズ自体で暗号化できることに注意してください。 ssh-keygen -f <file> -pを使用すると、パスフレーズが設定されます。 (最近のOpenSSHバージョンでは、これにAES-128-CBCが使用されています。)

ただし、両方のIdentityFileおよびエージェントを実行している場合、sshは、使用するキーを選択する際のヒントとしてファイルを使用するだけです。そのためには、キーの公開されている半分をチェックするだけで済みます。したがって、公開鍵が対応する.pubファイルに抽出されている限り、鍵を復号化しておく必要はありません。これはデフォルトで実行されますが、ssh-keygen -f <file> -yを使用して繰り返すことができます。

1
user1686