ホスト キー (ssh 接続からのキー) とは何ですか? また、公開キーと秘密キーのペアとどう違うのですか?

ホスト キー (ssh 接続からのキー) とは何ですか? また、公開キーと秘密キーのペアとどう違うのですか?

状況としては、以前に VPS を作成していたことです。すべてセットアップされ、秘密鍵と公開鍵の認証、ルート ログインの無効化、パスワード ログインの無効化が行われていました。すべてがセットアップされていました。

その後、このサーバーは破棄され、新しいサーバーが分離されます。

そこで、ssh -v root@new_server_ip_number新しくインストールした Linux インスタンスにログインすると、次のような結果が表示されます。

PS C:\Users\roeslermichal> ssh -v [email protected]
OpenSSH_for_Windows_8.6p1, LibreSSL 3.4.3
debug1: Reading configuration data C:\\Users\\roeslermichal/.ssh/config
debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling
debug1: Connecting to 10.32.81.216 [10.32.81.216] port 22.
debug1: Connection established.
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_rsa type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_rsa-cert type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_dsa type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_dsa-cert type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_ecdsa type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_ecdsa-cert type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_ecdsa_sk type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_ecdsa_sk-cert type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_ed25519 type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_ed25519-cert type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_ed25519_sk type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_ed25519_sk-cert type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_xmss type -1
debug1: identity file C:\\Users\\roeslermichal/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_for_Windows_8.6
debug1: Remote protocol version 2.0, remote software version OpenSSH_8.0
debug1: compat_banner: match: OpenSSH_8.0 pat OpenSSH* compat 0x04000000
debug1: Authenticating to 10.32.81.216:22 as 'root'
debug1: load_hostkeys: fopen C:\\Users\\roeslermichal/.ssh/known_hosts2: No such file or directory
debug1: load_hostkeys: fopen __PROGRAMDATA__\\ssh/ssh_known_hosts: No such file or directory
debug1: load_hostkeys: fopen __PROGRAMDATA__\\ssh/ssh_known_hosts2: No such file or directory
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ssh-ed25519
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: SSH2_MSG_KEX_ECDH_REPLY received
debug1: Server host key: ssh-ed25519 SHA256:5OrjMYiYdmoRTDgjsmBfOXun/4FpiClOU6L21gBDPSk
debug1: load_hostkeys: fopen C:\\Users\\roeslermichal/.ssh/known_hosts2: No such file or directory
debug1: load_hostkeys: fopen __PROGRAMDATA__\\ssh/ssh_known_hosts: No such file or directory
debug1: load_hostkeys: fopen __PROGRAMDATA__\\ssh/ssh_known_hosts2: No such file or directory
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:5OrjMYiYdmoRTDgjsmBfOXun/4FpiClOU6L21gBDPSk.
Please contact your system administrator.
Add correct host key in C:\\Users\\roeslermichal/.ssh/known_hosts to get rid of this message.
Offending RSA key in C:\\Users\\roeslermichal/.ssh/known_hosts:15
Host key for 10.32.81.216 has changed and you have requested strict checking.
Host key verification failed.

このSHA256:5OrjMYiYdmoRTDgjsmBfOXun/4FpiClOU6L21gBDPSk.行は何ですか? どういう意味ですか?
明らかに、このSHA256:5OrjMYiYdmoRTDgjsmBfOXun/4FpiClOU6L21gBDPSk.番号/ID は、Windows ファイル内の Linux サーバーを識別する番号と同じではありませんknown_hosts

私は Windows ラップトップと PowerShell を使用してこのサーバーにログインしています。この Windows マシンにはファイルが
あり、古いサーバーが破壊され、新しいサーバーが作成されたため、一部の ID が一致しない可能性があると予想していました。キーはすでに削除し、新しくインストールした Linux サーバーのこのキーに置き換えました。 しかし、ssh クライアントは私をログインさせません。 現在のファイルは次のようになります。C:\Users\roeslermichal\.ssh\known_hosts10.32.81.216 ssh-rsa10.32.81.216 ssh-rsa

:\Users\roeslermichal\.ssh\known_hosts

10.32.81.216 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGh8fEmrCov7TLbiKgGasUV3fxbrKmh4Ai/RWixt41Fl
10.32.81.216 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCr43mfkweJAaHQ4kw88b0y5OShnQl91jR1eoUIcnaMRvBEi3X7McVuA+cB+MWk4Rj9EX2hnq6tyB+26weQX0GXWf95CL/yqX5p39b+j8c43CR9/3gHbU5aV+exGBbj2rEL4JgmQD58fHHEsL1r6EMcpTUgY8JqfG0F52XUJrF7KdpxlW4vtgOaHdqooBMHuMi+bR7LRq/moAHLv3svB5PPhIfSbM5CW/Eke4H4qiAwKCVUjyXxKCoKkYVDyfQur+nBMxJssUHy03385hxV0gKo8WGQKlSNvI3B1vP85ij5zCYViYUfs05lXPkpsUqosGqHDOJhPnVRM4OacMQVkj2e0MKHs/cXA1GneBiY99tPMaEL2qZ0UJoaYcnG0krc0owKE6Ufx+84VVqLG7hJHPnNRI3UrFjG/C7lAzAogz5eDiYoQvkko7mLuwRob27fIB39oH2cbH4a4DCcIDekS0WwCPeA+uwaHrmhKJluqP8r7qvDluWax3cVzDGojD7I6cU=
10.32.81.216 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCMktfR/tBD8GYWRWpo8DsoIPPxos+Rt/C1Is04S0Dglm6UbQqQQUW9m9GfDWHZn3j37ZWPGeUwTcWEojKi70yk=

10.32.81.218 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFBuju3Gav0s6Uj8XFQToa/qU7gxsxvKqtUCctWaC4FC
10.32.81.218 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC6OCnBNeCfiLcYo7FAmopNBxWS5No+Locw+dxujELxhXn/zAEEnsMv+fZYP8JT8Jj+bYFX1jVAxBubqaz7swK3GCYkkL4C/dI2p7MV0E0ogznbZEZS0GHU3wA69R7s4F56oR3ZeCIas+gfe3mckB4i9UtZMy2IsGSVl974wletCXfdXxhkyRzHlgovoCnAYu9qOS/X2X2yuUNKKfL3VGQNkAih/Hjqh7Iwi36sLS8+WB/sYOk5cxJfycWewTEl1Wt5fB5bbc7Fu0Wmjn2IpMHspoR6YEw2lK/GuFIFjcVoHJ8+7JAuY9BnUdyuAbHLZ8vgrymcGw/ZP8GIhgRq1nOseAQrOzZMFtcGCS953a+L5gP9shX2ZwF/MS7h8+EYPxMNFZP6DbU++c4ZmOlb0lPkUJDhTnSbOoDZA+bfDl5jBlKtfF2V7n+V9Dwuwwbsp/qJyULIeMAdCrpjPhmKhnQASloZsEN5LLjh2gVN+YM7jACHe6ZyFD4/gpEE6N6MUG8=
10.32.81.218 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBonnCuOeQpc7CSRzbps8sLnPYMphNrfqs9h7Hz5I+Ml8QxPBUnlNw749EzqC29KFtyB8XE2SnbOK/CuUnghj5E=

しかし、この新しい Linux サーバーにキーを作成していないため、これらのホスト キーが何であるかはよくわかりません。この新しく作成した Linux サーバーに関して私が行った最初のアクションは、ルートとしてログインする方法でした。host_keysこのサーバーにはすでにいくつかあります。??? これらは、まだ作成していないため、プライベート/パブリック SSH キーではありません。では、Windows ファイルで生成され、新しい Linux サーバーを識別するこれらのキーとは何でしょうかknown_hosts

もう読んだこのスレッド何度か注意深く試しましたが、そこに示された回答とそれが機能する理由がよくわかりません。さらに、古いサーバー RSA ホスト キーを新しいサーバー RSA ホスト キーに置き換えたにもかかわらず、新しく作成した Linux サーバーにログインできない理由もわかりません。

PS C:\Users\roeslermichal> ssh-keyscan -t rsa 10.32.81.216
# 10.32.81.216:22 SSH-2.0-OpenSSH_8.0
10.32.81.216 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCr43mfkweJAaHQ4kw88b0y5OShnQl91jR1eoUIcnaMRvBEi3X7McVuA+cB+MWk4Rj9EX2hnq6tyB+26weQX0GXWf95CL/yqX5p39b+j8c43CR9/3gHbU5aV+exGBbj2rEL4JgmQD58fHHEsL1r6EMcpTUgY8JqfG0F52XUJrF7KdpxlW4vtgOaHdqooBMHuMi+bR7LRq/moAHLv3svB5PPhIfSbM5CW/Eke4H4qiAwKCVUjyXxKCoKkYVDyfQur+nBMxJssUHy03385hxV0gKo8WGQKlSNvI3B1vP85ij5zCYViYUfs05lXPkpsUqosGqHDOJhPnVRM4OacMQVkj2e0MKHs/cXA1GneBiY99tPMaEL2qZ0UJoaYcnG0krc0owKE6Ufx+84VVqLG7hJHPnNRI3UrFjG/C7lAzAogz5eDiYoQvkko7mLuwRob27fIB39oH2cbH4a4DCcIDekS0WwCPeA+uwaHrmhKJluqP8r7qvDluWax3cVzDGojD7I6cU=

10.32.81.216 ssh-ed25519norキーを交換していないのに10.32.81.216 ecdsa-sha2-nistp256、これがログインできない原因でしょうか?

答え1

SSHには相互認証があります。

まず、クライアントサーバーが実際に接続しようとしていたサーバーである~/.ssh/known_hostsかどうかを認証します。そのために、ファイル内のホスト キー ペアの公開部分を記憶します。最初の接続時に (これはまさに「はい」と入力するように要求する部分です)、またはホストの SSHFP レコードが含まれていてゾーンが DNSSEC で保護されているかどうかを DNS から学習します。サーバーが間違ったキーを提示していることをクライアントが発見した場合、通常は MitM 攻撃が進行中であると主張して接続を拒否します。

これがSSHホストキーペアの目的です。大まかに言えば、これはPKIインフラストラクチャのSSHバージョンですが、CAベースのものではありません(または、DNSSECを使用してCAのような信頼チェーンを実装します)。これはHTTPS証明書/キーペア(「Webサーバー認証」の目的)のようなもので、同じ目的を果たします。サーバーに属する非対称 (「公開鍵と秘密鍵」) キーのペア。

第二に、サーバクライアントが本当に本人であるかどうかを認証します。そのためには、ユーザー名/パスワードのペアや複雑なチャットベースの認証、またはサーバー上の users に保存されている非対称キー ペアを使用できます~/.ssh/authorized_keys。この場合、キー ペアはユーザーに属します。また、従来の CA ベースの PKI には、「類似物」であるクライアント証明書 (「Web クライアント認証」の目的) があります。


さて、出力にこの行が表示されましたかSomeone could be eavesdropping on you right now (man-in-the-middle attack)!? これは、防止するように設計された MitM 攻撃を報告する方法です。おそらく過度に慎重ですが、これがセキュリティです。

もしあなたが〜なら絶対に確実攻撃がなく、新しいフィンガープリントが正しい場合は、クライアントのknown_hostsファイルから問題のある行を削除するだけです。
コメントにある@JaromandaXのアドバイスに従うか、次のような方法ですべての問題のあるレコードを削除できます。

ssh-keygen -R 10.32.81.216

次に、あなたが確信しているかどうかの質問に文字通り「はい」と入力するか、ssh-keyscan説明されているユーティリティを使用して同意する必要があります。他の回答ではこのファイル構築方法では、MitMに関する対話型警告は回避されますが、依然として攻撃を受けやすい同じ理由で、ssh-keyscan のマニュアル ページにも記載されています (また、リンクの下の回答へのコメントでも何度も言及されています)。

関連情報