Erlangでsshとpublic_keyアプリケーションをいじっていて、いい機能を発見しました。
実行中の Erlang SSH デーモンにrsa キーを使用して接続しようとしましたが、認証に失敗し、パスワードの入力を求められました。
いくつかのデバッグとトレース (および数回のコーヒー) の後、何らかの奇妙な理由で、ユーザーの無効なキーがそこにあることに気付きました。authorized_keysファイルには2 つのキーが含まれていました。間違ったものはファイルのどこかにありましたが、正しいものはファイルの最後に追加されました。
現在、Erlang SSH アプリケーションは、提供されたキーと、authorized_keys に含まれているキーを比較するときに、最初のエントリを見つけていました (2 番目のキーは完全に無視されます - 正しいキー)。次に、別の認証メカニズムに切り替えていました (最初はrsaではなくdsaを試行し、次にパスワードの入力を求めていました)。
問題は次のとおりです。この動作は意図されたものですか、それとも SSH サーバーは、 authorized_keysファイル内の同じユーザーの複数のエントリをチェックする必要がありますか? これは一般的な SSH の動作ですか、それとも Erlang の実装に固有のものですか?