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

관련 정보