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


12

ユーザーがssh経由でログインできるサーバー(IPがabcdであると想定)があります。次に、IPを同じに保ちながら物理マシンを変更します。新しいマシンはまだこのようなユーザーによってアクセスされるように

$ ssh abcd

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

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
@警告:リモートホストIDが変更されました!@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
誰かが何か厄介なことをしている可能性があります!
誰かが今あなたを盗聴している可能性があります(中間者攻撃)!
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プロンプトが表示されることを知っています。私が欲しいのは、ユーザーがこのマシン全体の交換に気づかずに、パスワードの入力を求められることです。

どうやってするか?


3
これがssh中間者攻撃に対する唯一の保護を無効にし、意図したマシンではなく攻撃者にパスワードを送信することにつながることを知っていますか?アクティブな攻撃に対して無防備であるという事実(たとえば、ターゲットマシンと同じ安全な内部ネットワーク上にいる)を知らない限り、これはsshのセキュリティモデルを破壊します。
David Schwartz、2013年

はい。両方のマシンは同じ内部ネットワークにあります。ユーザーも同じ内部ネットワーク内にいます。この状況で、私の選択肢は何ですか?
Souvik Pal

それでは十分じゃない。それらは同じ安全な内部ネットワークにある必要があります。つまり、100%安全ではない内部ネットワークにデバイスが接続されていないことを100%信頼する必要があり、それらのデバイスを制御したり、デバイスをそのネットワークに接続できるすべてのユーザーを100%信頼する必要があります。つまり、ほとんどすべての現実的なシナリオでは、これは悪い考えです。
David Schwartz、2013年

2
それは完全に合理的なことです。sshサーバーキーをHA用の別のサーバーに複製しているので、ログインするとこれらのエラーが発生します。さらに、フェイルオーバー時にメールが届きます。
Matt H

3
私はマットに同意します。両方のマシン、したがってキーの所有者を制御している場合、ホストキーをあるマシンから別のマシンに移動することは、中間の攻撃やリスクではありません。接続しているユーザーがホストキーを信頼している場合、それは重要ではありません。
ロス

回答:


14

以下のようEthabellが述べたように、あなたは新しいサーバーに現在のホスト鍵をコピーすることができます。

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

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

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


1

元のホストキーがある場合は、それを復元するとエラーが発生しなくなります。

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

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


新しいマシンでホストキーを復元する方法について詳しく説明できますか?
Souvik Pal

1

このようにしてみてください

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ホストキー変更エラー

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.