RHEL8 시스템이 누락된 경우 SSH 호스트 키를 자동으로 생성하지 않는 이유는 무엇입니까?

RHEL8 시스템이 누락된 경우 SSH 호스트 키를 자동으로 생성하지 않는 이유는 무엇입니까?

RHEL 8 및 이전 버전에서는 SSH 호스트 키가 누락된 경우 서비스 /etc/ssh에 의해 자동으로 생성되는 것이 일반적입니다 sshd. 일반적으로 다음이 있어야 합니다.

/etc/ssh/ssh_host_ecdsa_key
/etc/ssh/ssh_host_ecdsa_key.pub
/etc/ssh/ssh_host_ed25519_key
/etc/ssh/ssh_host_ed25519_key.pub
/etc/ssh/ssh_host_rsa_key
/etc/ssh/ssh_host_rsa_key.pub

노드를 다시 시작하거나 systemctl restart sshd충분해야 합니다.

그러나 RHEL 8.7 마이너 버전에서는 더 이상 작동하지 않을 수 있으며 sshd저널 로그에 호스트 키가 누락되었다고 불평하는 충돌이 발생할 수 있습니다. 왜? 이 문제를 어떻게 해결할 수 있나요?

답변1

sshd기본적으로 서비스는 디렉터리의 호스트 키 가용성을 확인하고 누락된 경우 이를 생성하는 호출 을 수행합니다 sshd-keygen.target./etc/ssh

그러나 이 잘 알려진 기능은 새 버전의 cloud-init. 현재 cloud-init-22.1-5.el8.noarch새 파일이 있습니다.

/etc/systemd/system/[email protected]/disable-sshd-keygen-if-cloud-init-active.conf

내용:

# In some cloud-init enabled images the sshd-keygen template service may race
# with cloud-init during boot causing issues with host key generation.  This
# drop-in config adds a condition to [email protected] if it exists and
# prevents the sshd-keygen units from running *if* cloud-init is going to run.
#
[Unit]
ConditionPathExists=!/run/systemd/generator.early/multi-user.target.wants/cloud-init.target

따라서 를 사용할 때 cloud-init이제 두 가지 옵션이 있습니다.

  1. 다음 을 사용하여 수동으로 호스트 키를 생성합니다 ssh-keygen -A(참조SSH 호스트 키를 변경하는 방법은 무엇입니까?자세한 내용과 옵션을 확인하세요.
  2. 조건을 댓글로 달아주세요

#간단하게 간판을 앞에 두세요 .ConditionPathExists...

[Unit]
#ConditionPathExists=!/run/systemd/generator.early/multi-user.target.wants/cloud-init.target

그런 다음 systemctl daemon-reload. 평소의 동작이 다시 작동해야 합니다.

답변2

cloud-init를 사용하는 경우 "cloud_init_modules" 섹션의 cloud-init 구성 파일에 'ssh' 모듈을 추가하여 문제를 해결할 수 있습니다. 나타내다클라우드 초기화 문서

그러면 처음 부팅하는 동안 SSH 호스트 키가 생성됩니다.

문제가 있는 경우 이를 테스트할 수 있습니다.

cloud-init config file: /etc/cloud/cloud.cfg
Check if you have 'ssh' module in "cloud_init_modules" section
Run this command to verify cloud-init action. NOTE: This will REBOOT your instance and run the cloud-init action from the scratch.
# cloud-init clean --reboot

/etc/ssh/ 디렉터리에서 SSH 호스트 키와 SSHD 서비스 상태를 확인합니다.

답변3

cloud.cfg에서 SSH 키 유형을 명시적으로 설정해 보세요.

resize_rootfs_tmp: /dev
ssh_deletekeys:   1
ssh_genkeytypes: ['rsa', 'ecdsa', 'ed25519']

관련 정보