knownhostsに追加される接続先の情報を見ていて疑問に思ったのですが
鍵の種類(ssh-rsa,ecdsa-sha2-nistp256)は接続先(以下、SSHサーバ)の
何の情報によって決定されるのでしょうか?
SSHサーバには同じ公開鍵を配布しているのですが、接続するサーバによって鍵の種類が
ssh-rsaだったりecdsa-sha2-nistp256だったりします。
鍵の種類は秘密鍵と公開鍵作成時に決まるものと思っていたのですが、
理解が間違っていたらご指摘いただけると幸いです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
ホスト鍵とユーザ認証鍵は違う物だという事は既に出ているので、known_hostsに書かれるホスト鍵の決まり方について書きます。
sshで接続する時、クライアントとサーバは自分が対応している(使いたい)暗号方式等をお互いに伝え合います。この手順をKey Exchange(KEX)と呼びます。
このKEXで決まる物の中にホスト鍵認証方式が有ります。KEXの最終段階でサーバは決定したホスト鍵認証方式に対応する形式のホスト鍵を送り、クライアントはその送られて来たホスト鍵をknown_hostsに記録します。
KEXでの使用する暗号方式等の決定方法は「クライアントとサーバの両方が対応している物のうち、クライアントが最初に指定した物」となります。これはホスト鍵認証方式に限らず、鍵交換方式や通信路の暗号化方式等でも同じです。
例えばクライアントとサーバがホスト鍵認証方式として以下を指定したとします。
- クライアント:
ssh-xmss@openssh.com
,rsa-sha2-512
,rsa-sha2-256
,ssh-rsa
,ssh-ed25519
- サーバ:
ssh-ed25519
,rsa-sha2-256
,rsa-sha2-512
,ssh-rsa
,ssh-dss
この場合、クライアントとサーバ両方が対応している方式は
rsa-sha2-512
rsa-sha2-256
ssh-rsa
ssh-ed25519
の4つですが、この内でクライアントが最初に指定したrsa-sha2-512
がホスト鍵認証方式として決まり、rsa-sha2-512
で使われるRSA(ssh-rsa)鍵がクライアントに送られます。
ホスト鍵認証方式の指定は、OpenSSHの場合は設定ファイル(クライアント: /etc/ssh/ssh_config, ~/.ssh/config, サーバ: /etc/ssh/sshd_config)のHostkeyAlgorithms
で設定できます。
ただしクライアント側は設定がそのまま使われますが、サーバ側は対応する鍵が無い方式が取り除かれます。
投稿2020/09/21 19:48
総合スコア947
0
ベストアンサー
まず最初に目的の違う2種類の鍵ペアがあるということを理解する必要があると思います。
公開鍵認証の際に使う鍵ペアと、ホストのなりすましを防ぐ目的でやりとりされるホストキーの鍵ペアです。(以下ファイル位置はLinuxMint上のOpenSSHの場合)
公開鍵認証で使う鍵は、「/.ssh/id_rsa」と「/.ssh/id_rsa.pub」のようなファイルで、公開鍵を接続しようとするリモートホストの「~/.ssh/authrized_keys」に登録します。
ホストキーの鍵ペアは「/etc/ssh/ssh_host_rsa_key」「/etc/ssh/ssh_host_rsa_key.pub」のようなファイルで、初めて接続するホストの公開鍵はサーバーからコピーされ「~/.ssh/known_hosts」に登録されていきます。
ホストキーは、今まで接続していたリモートホストと違うホストがなりすまして接続を受け付けた場合に、それを検出しそれを防ぐ仕組みで使われます。
「knownhostsに追加される接続先の情報」は接続先ホストのホストキーの公開鍵で、「SSHサーバには同じ公開鍵を配布しているのですが」の鍵は公開鍵認証に使用する公開鍵であり別物で、鍵の種類が違っていても互いに影響ありません。
ホストによって、ホストキーの公開鍵の種類が何故違うかについてはあまり詳しくありません。OSの種類やバージョンや、sshd設定ファイルによって決定しているんじゃないかという気がします。
投稿2020/09/17 13:28
総合スコア1248
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
サーバ(必ずしもそうである必要は無いが)を立ち上げて、
SSHを有効にすると、そこで鍵が生成されますよね。
その時OSやバージョンによって生成される種類が違うという、
それだけの事ではないでしょうか。
>>SSHサーバには同じ公開鍵を配布しているのですが、
これは意味不明です。クライアントの鍵とサーバの鍵は別物です。
投稿2020/09/17 12:54
総合スコア923
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/22 15:48