あるサーバーから別のサーバーにSSHキーをコピーする

あるサーバーから別のサーバーにSSHキーをコピーする

私はサーバーを持っています(IPはabcdと仮定します)。ユーザーはSSH経由でログインできます。今、IPはそのままで物理マシンを変更したいと考えています。新しいマシンは、次のようなユーザーによって引き続きアクセスされます。

$ssh ABCD

問題は、ユーザーがログインしようとするたびに、次の ssh キー不一致エラーが発生することです。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 警告: リモート ホストの識別が変更されました! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
誰かが何か悪いことをしている可能性があります!
誰かが今あなたを盗聴している可能性があります (中間者攻撃)。
RSA ホスト キーが変更された可能性もあります。
リモートホストから送信されたRSAキーのフィンガープリントは
02:dc:c6:18:1b:34:b7:1d:fa:90:ab:e1:95:48:69:84.
システム管理者に問い合わせてください。
このメッセージを削除するには、/home/user/.ssh/known_hosts に正しいホスト キーを追加します。
/home/user/.ssh/known_hosts:37 に問題のあるキーがあります
卒業生の RSA ホスト キーが変更されたため、厳密なチェックを要求しました。
ホストキーの検証に失敗しました。

ユーザーはファイル ~/.ssh/known_hosts から行番号 37 を削除でき、次回は yes/no プロンプトが表示されることはわかっています。私が望んでいるのは、ユーザーがこのマシンの置き換えについて何も知らないまま、パスワードのプロンプトだけが表示されるようにすることです。

どうやってするか?

答え1

としてエサベル前述のように、現在のホスト キーを新しいサーバーにコピーできます。

ファイルを開くと、ホスト キーを見つけることができますsshd_config(私の Ubuntu 12.04 ボックスでは/etc/ssh/sshd_config)。構成ファイルでHostKeyエントリを探します。これらのエントリは、ホスト キー ファイルが配置されている場所を示します。これらのファイルを新しいサーバーにコピーし、コピーしたキーを指すように新しいサーバーを更新できますsshd_config(または、新しいサーバーに既に存在するファイルを上書きします)。

また、マニュアル ページのこのセクションsshd_config、特に権限に関する部分に注意してください。

SSH が使用する秘密ホスト キーを含むファイルを指定します。デフォルトは/etc/ssh/ssh_host_keyプロトコル バージョン 1 の場合、 /etc/ssh/ssh_host_dsa_key、プロトコル バージョン 2 の場合/etc/ssh/ssh_host_ecdsa_keyです/etc/ssh/ssh_host_rsa_key。グループ/ワールド アクセス可能なファイルの場合、sshd(8) はそのファイルの使用を拒否することに注意してください。複数のホスト キー ファイルを持つことができます。SSH プロトコルのバージョン 1 では「rsa1」キーが使用され、バージョン 2 では「dsa」、「ecdsa」、または「rsa」キーが使用されます。

答え2

元のホスト キーがあれば、それを復元してエラーを停止できます。

または、sshd 設定ファイルで StrictHostKeyChecking をオフにすることもできます。

...しかし、これをするのは、非常にひどい考えです。 クライアント マシンでのみ実行する方法があればssh-keygen -R server.example.com、それが最善の方法です。ホスト キーのチェックをオフにすることは、「おい、攻撃してくれ」と言っているようなものです。変更があったときに目立たないようにしたいのはわかりますが、変更を隠すことよりもセキュリティを最優先にすべきです。

答え3

こうやって試してみて

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"' 

.ssh フォルダが存在しない場合は、上記のコマンドは失敗することに注意してください。また、ファイルを作成するときに、可能な限り最小限の権限 (基本的に所有者のみの読み取り/書き込み) を設定することをお勧めします。より高度なコマンドを次に示します。

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'

この問題について詳しく知るには、次の Web サイトにアクセスしてください。SSH ホスト キー変更エラー

関連情報