SSHキーの一括更新

SSHキーの一括更新

最近、プライマリ・サーバーを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

関連情報