サーバー側から

サーバー側から

sshクライアント(デフォルトでは、少なくともUbuntu 18.04およびFreeBSD 12では)は常にサーバーのキーフィンガープリントがファイルに存在することを確認しますknown_hosts

デュアルブート機能を備えたLANにホストがあります。どちらのOSも同じ静的IPを使用します。接続しsshたい両方その中にエラーは発生しませんでした。

これは明らかに実行時に確認に違反しますknown_hosts。指紋を受け入れると、OSの切り替え時にホストIPに関連付けられ、IPは同じですが、known_hosts再接続するには手動で削除する必要があります。 。その指紋が欲しいまたはもう一つは、IPを考えると承認されました。

お持ちですか?顧客この問題に対する解決策は何ですか?

私はとOpenSSH_7.8p1, OpenSSL 1.1.1a-freebsd 20 Nov 2018を使用していますOpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017

ノート:サーバーの指紋を「確認」したくありません。 2つの代替指紋(1つではなく)をサーバーのIPアドレスに関連付けることができるかどうか疑問に思います。

答え1

問題は、ホストキーがホストのキーであることです。実際には、ホストごとに1つだけが必要です。もちろん、キータイプが多いので、それも多いですが、単一のホストに許可される複数のキーを提供するためにキータイプに依存することは避けたいと思います。

サーバー側から

最初の提案は、クライアント側でこれを本当に行うには慎重に考えることです。あるオペレーティングシステムから別のオペレーティングシステムにホストキーをコピーするだけで、両方のオペレーティングシステムを同じホストとして扱うことができます。

OpenSSHからコピーした場合は、/etc/ssh/ssh_host*他のオペレーティングシステムでも使用できます。実行しているSSHサーバーによっては、一部の再フォーマットが必要になる場合があります。


しかし...

サーバー側のソリューションを除外した理由を尋ねてください。最も簡単な方法は、両方のオペレーティングシステムで同じホストキーを使用することではありませんか? ——フィリップ・クーリン

@PhilipCouling 部分的には、使いやすさのためにオペレーティングシステムの1つがWindowsです。その理由の1つは、あるホストから別のホストにキーを送信しないことです。これは時々推奨されない慣行です。しかし、主な理由はこれです:可能であれば、SSHクライアント構成にある程度柔軟性があることを望みます。 – ボウパーク

両方のオペレーティングシステムがIPとポート番号を共有していても、異なるホストで処理する方法を探しているようです。


クライアントから

おそらく最も信頼性の高い方法は、各オペレーティングシステムに対してホスト固有の設定を設定することです。~/.ssh/config追加するには編集(または作成)してください。

Host windows.dualbootbox
    Hostname 192.168.10.20
    UserKnownHostsFile ~/.ssh/windows.dualbootbox.known_hosts

Host ubuntu.dualbootbox
    Hostname 192.168.10.20
    UserKnownHostsFile ~/.ssh/ubuntu.dualbootbox.known_hosts

Hostname各アドレスがHostIPで解決されるかどうかを指定する必要はありません。バラよりman ssh_config設定オプションの詳細をご覧ください。

上記の構成では、次のことができます。

ssh [email protected]
ssh [email protected]

答え2

これを行う方法はいくつかあります。 1つの方法は、StrictHostKeyChecking noホストにSSHで接続するときに使用することです。これにより、Known_hostsにエントリが生成されなくなります。

ssh -o StrictHostKeyChecking=no <ip>

または

ssh -o UserKnownHostsFile=/dev/null <ip>

あるいは、必要に応じて.ssh / configファイルを変更することもできます。

関連情報