目次

【1Password】Too Many Authentication Failuresエラーが出た場合の対処法


ある日突然、ssh時にToo many authentication failuresが出て、どこのサーバにもsshできなくなった場合の対処法

前回までのあらすじ。

  • 1Passwordにsshキーを保存して端末には認証情報を持たないようにした。

今回のあらすじ。

  • 認証情報を1Passwordに集約したら、ssh時にToo many authentication failuresが出力されるようになった。

1ドル160円になりそうな円安時代にM2 ProのMacBook Proを買ってみた

1ドル160円に届いた!とおもったら152円までもどったでござる!

原因は、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を編集する

1
2
3
Host github.com
  IdentityFile ~/.ssh/public-key-downloaded-from-1password.pub
  IdentitiesOnly yes

この時、 public-key-downloaded-from-1password.pubのパーミッションには注意する。公開鍵は644である必要がある。

こうすることで、1Passwordは特定のホストに対しての特定の鍵を認識できるようになり、幾つの鍵を1Passwordに保存しようが、Too many authentication failures問題とはおさらばできるのである。

…ということがTIL.

Advanced use cases | 1Password Developer

Learn more about how to use the SSH agent for specific hosts, avoid authentication limits, and sign Git commits in multiple GitHub accounts.