最近、プライマリ・サーバーをOracle Linux 8.8からOracle Linux 9.3にアップグレードしました。
残念ながら、多くのシステムはまだSSH認証にRSAキーを使用しており、OpenSSH 8.7では動作しなくなりました。
したがって、新しいECDSAキーをリリースする必要があります。
for
約150台以上のサーバーでこれを行う必要があるため、次のループを使用してプロセスを単純化しようとしました。
for a in $(grep -v "^#" /etc/hosts | grep -i "fs" | awk '{print $2}'); do ssh-keygen -R $a; sshpass -p 'PASSWORDXYZ' ssh-copy-id -o StrictHostKeyChecking=no -i id_ecdsa $a; done
変更されたサーバーにログインしようとすると、次のメッセージが表示されます。
$ ssh acefs150
The authenticity of host 'server1 (X.X.X.X)' can't be established.
ED25519 key fingerprint is SHA256:XYZHDKLLDJ.
This host key is known by the following other names/addresses:
~/.ssh/known_hosts:293: server2
~/.ssh/known_hosts:296: server3
~/.ssh/known_hosts:297: server4
~/.ssh/known_hosts:305: server24
~/.ssh/known_hosts:306: server26
~/.ssh/known_hosts:307: server180
~/.ssh/known_hosts:310: server185
~/.ssh/known_hosts:312: server88
(105 additional names omitted)
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
各サーバーに固有のホストキーが必要なので、これは私には少し奇妙に見えます。そうではありませんか?
一度「はい」と入力した後、もう一度質問はありませんでした。
全体のプロセスを正しい方法で進めていますか?それとも、より良い方法がありますか?
答え1
私はそのメッセージが与えられたコマンドに厳密に関連しているとは思わない。
リモートホストには、昨日または10年前に受け入れたのと同じ(以前の)キーがすでに存在している可能性があります。これらのIDを削除すると、新しい(複製された)ED25519 IDが表示されます。
答え2
各サーバーには固有のホストキーが必要です。そうですか?
それしなければならないしかし、誰かがゴールデンイメージを使用してホストを実装したり、ホストキーを再生成せずに既存のホストを複製したりすると、これが発生する可能性があります。
現在のキーを交換すると、現在のキーを見ているすべてのクライアントが苦情を表示するため、この問題を解決するとさらに問題が発生します。
mkdir /etc/ssh/oldkeys
mv /etc/ssh/*key /etc/ssh/oldkeys
mv /etc/ssh/*.pub /etc/ssh/oldkeys
ssh-keygen -A