LinuxでSSHキーの設定について読んで、いくつかの質問があります。私が間違っている場合は訂正してください...
ホストtr-lgtoがsshを使用してホストtr-mdmに接続しようとしているとします。実際の tr-mdm であることを確認するには、 tr-mdm に鍵ペアを生成し、公開鍵をknown_hosts
tr-lgto に追加します。 tr-mdmが実際のtr-lgtoであることを確認するには、tr-lgtoがキーペアを生成し、公開鍵をauthorized_keys
tr-mdmに追加する必要があります。
質問1:いいえユーザーKnown_hostsファイルのフィールドはIPアドレスとホスト名のみです。 tr-mdmには、独自の.ssh
フォルダを持つユーザーが多い場合があります。すべてのファイルに公開鍵を追加する必要がありますかknown_hosts
?
質問2ssh-keyscan -t rsa tr-mdm
:tr-mdmの公開鍵が返されることが確認されました。このキーがどのユーザーに属しているかをどうやって知ることができますか?また、入力した公開鍵は、コマンド/root/.ssh/
によって返された公開鍵とは異なります。どうやって?
答え1
クライアントシステムに対するサーバーシステムの認証と、サーバーシステムに対するユーザー認証を混同しています。
サーバー認証
SSH接続が確立されると、最初に行われるのは、サーバーが公開鍵をクライアントに送信してそれを証明することです(おかげで)。公開鍵暗号化) は、接続された秘密鍵を知っていることをクライアントに示します。これはサーバーを認証します。プロトコルのこの部分が成功すると、クライアントはサーバーが偽装している人であることがわかります。
クライアントは、サーバーが既知のサーバーであり、正しいサーバーを偽装したいいくつかの不良サーバーではないことを確認できます。 SSHは、サーバーの正当性を確認するための簡単なメカニズムのみを提供します。 SSHは接続されたサーバーを~/.ssh/known_hosts
クライアントシステムのファイルに保存します(システム全体のファイルもあります/etc/ssh/known_hosts
)。初めてサーバーに接続するときは、サーバーから提供された公開鍵が実際に接続しようとしているサーバーの公開鍵であるかどうかを確認する必要があります。接続するサーバーの公開鍵がある場合は、~/.ssh/known_hosts
クライアントに手動で追加できます。
機密データがサーバーに送信される前に、サーバーを認証する必要があります。特に、ユーザー認証にパスワードが含まれている場合は、認証されていないサーバーにパスワードを送信しないでください。
ユーザー認証
サーバーは、リモートユーザーがアカウントにアクセスできることを証明できる場合にのみログインを許可します。サーバーの構成とユーザーの選択に応じて、ユーザーはさまざまな資格情報のいずれかを提供できます(以下のリストは完全なリストではありません)。
- ユーザーはログインしたいアカウントのパスワードを入力でき、サーバーはパスワードが正しいことを確認します。
- ユーザーは公開鍵を提供し、その公開鍵に関連付けられた秘密鍵を所有していることを証明できます。これはサーバーの認証に使用されるのと同じ方法ですが、サーバーがユーザーを認証している間、ユーザーは自分の身元を証明しようとします。ユーザーが秘密鍵を知っていて公開鍵がアカウントの承認済みリスト(
~/.ssh/authorized_keys
サーバー)にあることを証明すると、ログイン試行が許可されます。 - 別のアプローチは、ユーザ認証タスクの一部をクライアントコンピュータに委任することである。これは、多くのコンピュータが同じアカウントを共有する企業などの管理された環境で発生します。サーバーは、逆方向に使用されるのと同じメカニズムを介してクライアントコンピュータを認証し、クライアントを使用してユーザーを認証します。
答え2
友達が私に答えを与えた。デフォルトでは、キーはユーザーではなくシステムを識別します。したがって、キーは/ etc / ssh /に保存されます。だから私は/root/.sshに保存されたキーとは異なるキーを得ました。