SSH認証はどのように機能しますか?

SSH認証はどのように機能しますか?

私の質問は次のシナリオに基づいています:serverA、、および。両方のユーザーが両方のサーバーに存在します。serverBuser1user2

user1serverASSHキーペアを生成し、公開キーをauthorized_keysファイルにコピーしましたserverB

user2onはserverASSHキーペアを生成せず、onはSSHキーペアを生成しませんでしたserverB

user1にログインしますserverAuser1SSHを介して()serverBに接続しようとしましたが、正常に動作し、パスワードは必要ありません。user2ssh user2@serverb

私の問題はこれです。どのように動作しますか?user2そこに公開鍵はありませんserverB。私はいつもSSHがログインしようとしているユーザーを認証していると思いました。これは、SSHがserverB現在ログインを認証することを意味しますか?user1serverA

答え1

まったく正しくないようです。 OpenSSHを使用していますか?それとも別のSSH実装がありますか?

どのように動作するかについて質問に戻ると、期待どおりです(単純化)。

  • リモートシステムに接続します。
  • ユーザー名で。
  • リモートシステムはユーザーの存在を確認し、鍵を要求します(鍵認証が構成されている場合)。
  • ユーザーHOME / .ssh / authorized_keysが存在することを確認してください。
  • Authorized_keysのエントリが有効か、何も見つからないまで1つずつ確認してください。
  • 一致するキーが見つかった場合、認証は成功しました。

これは完全にターゲットユーザーの〜.ssh / authorized_keysファイル内のキーに基づいています。これらのファイル/キーがないと、何かが深刻に破損します。

答え2

あなたが言及したコメントから.rht_authorised key

デフォルトのユーザー固有の認証キーファイルは、ユーザーのホームディレクトリを~/.ssh/authorized_keys参照する必要があります。使用される~場合、.rht_authorisedデフォルトではなく OpenSSH 構成が使用されていることを意味します。

/etc/ssh/sshd_configAuthorizedKeysFile認証キーファイルに異なる場所(または場所)を定義することは、キーワードを使用して可能です。絶対パスとして定義され、定義にタグが使用されない%h場合、すべてのユーザーは同じ認証キーを使用します。ファイル 。%u%U

AuthorizedKeysCommand最新のOpenSSHバージョンには、ユーザーを認証するときに公開鍵を見つけるプログラムまたはスクリプトを定義するキーワードもあります。デフォルトでは使用されませんが、一部のホスティングまたはクラウド設定で使用できます。

何を報告する必要がありますかgrep -i authorizedkeys /etc/ssh/sshd_config

関連情報