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
各アドレスがHost
IPで解決されるかどうかを指定する必要はありません。バラより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ファイルを変更することもできます。