Por que o sistema RHEL8 não gera chaves de host SSH automaticamente quando ausentes?

Por que o sistema RHEL8 não gera chaves de host SSH automaticamente quando ausentes?

No RHEL 8 e anteriores é comum que as chaves do host SSH /etc/sshsejam geradas automaticamente pelo sshdserviço quando ausentes. Normalmente deveria haver:

/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

A reinicialização do nó ou mesmo systemctl restart sshddeve ser suficiente.

Mas a partir da versão secundária RHEL 8.7 isso pode não funcionar mais e as sshdfalhas reclamam da falta de chaves de host no log do diário. Por que? Como posso resolver isso?

Responder1

O sshdserviço por padrão chama sshd-keygen.target, que verifica a disponibilidade das chaves do host no /etc/sshdiretório e as gera quando faltam.

No entanto, esta funcionalidade bem conhecida pode ser bloqueada pela nova versão do cloud-init. A partir de agora cloud-init-22.1-5.el8.noarchhá um novo arquivo:

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

com conteúdo:

# 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

Então, quando você usa o cloud-initvocê tem 2 opções agora:

  1. Gere chaves de host manualmente com ssh-keygen -A(consulteComo alterar uma chave de host SSH?para mais detalhes e opções.
  2. Comente a condição

Basta colocar o #sinal antesConditionPathExists...

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

Em seguida, recarregue a configuração do systemd com systemctl daemon-reload. O comportamento normal deve estar funcionando novamente.

Responder2

Se você estiver usando o cloud-init, poderá corrigi-lo adicionando o módulo 'ssh' no arquivo de configuração do cloud-init na seção "cloud_init_modules". Referirdocumentos de inicialização em nuvem

Isso irá gerar a chave do host ssh durante a primeira inicialização.

Você pode testar isso caso esteja tendo problemas:

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

Verifique a chave do host ssh no diretório /etc/ssh/ e o status do serviço sshd.

Responder3

Tente definir explicitamente os tipos de chave ssh em cloud.cfg

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

informação relacionada