【1Password】Too Many Authentication Failuresエラーが出た場合の対処法
ある日突然、ssh時にToo many authentication failures
が出て、どこのサーバにもsshできなくなった場合の対処法
前回までのあらすじ。
- 1Passwordにsshキーを保存して端末には認証情報を持たないようにした。
今回のあらすじ。
- 認証情報を1Passwordに集約したら、ssh時に
Too many authentication failures
が出力されるようになった。
原因は、6回以上の認証誤り
1Passwordの公式サイトにも記載がある通り、OpenSSHはデフォルトでSSH接続の認証試行回数を6回に制限している。これはローカル側ではなく、サーバサイドの設定。
そのため6回失敗して、7回目の試行になると、Too many authentication failures
を返す仕様らしい。1Passwordに認証情報を移譲すると、Vaultに保存されているsshキーを順番に試す。失敗すれば次の鍵で施行するため、7つ以上の鍵を保存しているとこのような状態に陥る可能性はある。
そのためどうすれば良いか、というのが今回のお話。
公開鍵を指定して、特定のホストに特定の鍵で認証を促す
ローカル側に秘匿情報を持たない代わりに、公開鍵を端末に保存し、sshconfigで指定することが今回の対応策のポイント。
1. 1Passwordから公開鍵をダウンロードする
1Passwordに保存した秘密鍵を開くと、自動で「公開鍵」の情報が表示されているはず。これのプルダウンをクリックすると「ダウンロード」が表示される。
「ダウンロード」するとデフォルトで ~/Downloads/id_rsa.pub という名前で保存される。この名前は今後も別の公開鍵を「ダウンロード」すると重複してしまうので、すぐさま適当な名前にリネームしておこう。
例えば、github.comの鍵だったら、「public-key-downloaded-from-1password.pub」という風に。
2. ~/.ssh/config を編集して特定ホストに特定の公開鍵をIdentityFile
で指定する
具体的には以下のように config
を編集する
|
|
この時、 public-key-downloaded-from-1password.pub
のパーミッションには注意する。公開鍵は644である必要がある。
こうすることで、1Passwordは特定のホストに対しての特定の鍵を認識できるようになり、幾つの鍵を1Passwordに保存しようが、Too many authentication failures
問題とはおさらばできるのである。
…ということがTIL.