私の質問は次のシナリオに基づいています:serverA
、、および。両方のユーザーが両方のサーバーに存在します。serverB
user1
user2
user1
でserverA
SSHキーペアを生成し、公開キーをauthorized_keys
ファイルにコピーしましたserverB
。
user2
onはserverA
SSHキーペアを生成せず、onはSSHキーペアを生成しませんでしたserverB
。
user1
にログインしますserverA
。user1
SSHを介して()serverB
に接続しようとしましたが、正常に動作し、パスワードは必要ありません。user2
ssh user2@serverb
私の問題はこれです。どのように動作しますか?user2
そこに公開鍵はありませんserverB
。私はいつもSSHがログインしようとしているユーザーを認証していると思いました。これは、SSHがserverB
現在ログインを認証することを意味しますか?user1
serverA
答え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_config
AuthorizedKeysFile
認証キーファイルに異なる場所(または場所)を定義することは、キーワードを使用して可能です。絶対パスとして定義され、定義にタグが使用されない%h
場合、すべてのユーザーは同じ認証キーを使用します。ファイル 。%u
%U
AuthorizedKeysCommand
最新のOpenSSHバージョンには、ユーザーを認証するときに公開鍵を見つけるプログラムまたはスクリプトを定義するキーワードもあります。デフォルトでは使用されませんが、一部のホスティングまたはクラウド設定で使用できます。
何を報告する必要がありますかgrep -i authorizedkeys /etc/ssh/sshd_config
?