Como redefinir as chaves de host SSH ao implantar modelos Linux no Proxmox
Tabela de Conteúdo
- 🌟 Introdução
- 🗂️ Proxmox Cluster e criação de VMs
- 🔑 A importância das chaves de host SSH
- 📤 O método tradicional para redefinir as chaves de host SSH
- 🚀 Automatizando a redefinição das chaves de host SSH
- 📝 Entendendo o arquivo de serviço systemd
- 🛠️ Configurando o arquivo de serviço
- ⚙️ Habilitando e verificando o arquivo de serviço
- 🔄 Criando uma imagem ou modelo
- 💻 Testando as chaves de host SSH em uma nova instância
🌟 Introdução
Neste tutorial, vou ensinar um método simples para garantir que cada instância que você criar a partir de uma imagem seja criada com seu próprio conjunto de chaves de host SSH. Isso é importante para evitar confusão no cliente SSH. Embora o Cloud-init seja uma ótima solução para isso, você também pode automatizar a redefinição das chaves de host SSH sem precisar aprender os detalhes complexos do Cloud-init. Vou mostrar como fazer isso usando o Proxmox Cluster e demonstrar como criar uma VM no cluster para servir como exemplo neste tutorial.
🗂️ Proxmox Cluster e criação de VMs
Antes de começarmos, vamos configurar nosso ambiente. No exemplo deste tutorial, estou usando um cluster Proxmox, mas esse processo não é exclusivo para o Proxmox. Você pode aplicar esses conceitos a outras soluções semelhantes, como o Clonezilla.
Para criar uma VM no Proxmox, siga estas etapas:
- Acesse o seu cluster Proxmox.
- Selecione o host onde deseja criar a VM.
- Proceda para criar uma nova VM e forneça um ID único para ela.
- Configure a VM de acordo com suas preferências, especificando o número de núcleos, memória e outros detalhes.
- Inicie a VM e aguarde até que ela esteja pronta.
🔑 A importância das chaves de host SSH
Antes de prosseguirmos com a automação do processo de redefinição das chaves de host SSH, vamos entender a importância dessa etapa. As chaves de host SSH são usadas para autenticar a identidade do servidor ao qual estamos nos conectando via SSH. Quando criamos uma imagem ou modelo a partir de uma VM existente, as chaves de host SSH são mantidas, o que significa que todas as instâncias criadas a partir dessa imagem terão as mesmas chaves de host SSH. Isso pode causar confusões no cliente SSH e é uma prática de segurança ruim.
📤 O método tradicional para redefinir as chaves de host SSH
Vamos começar analisando o método tradicional para redefinir as chaves de host SSH. Existem algumas etapas que precisamos seguir manualmente:
- Verifique se o arquivo
ssh-keygen
existe no sistema.
- Remova as chaves de host SSH existentes e gere novas chaves usando o comando
ssh-keygen
.
- Reinicie o serviço SSH para carregar as novas chaves.
Este método funciona, mas é um pouco trabalhoso e envolve várias etapas manuais. Felizmente, podemos automatizar esse processo usando um serviço systemd personalizado.
🚀 Automatizando a redefinição das chaves de host SSH
Vamos agora ver como podemos automatizar o processo de redefinição das chaves de host SSH usando um serviço systemd personalizado.
Comece acessando nosso ambiente Proxmox e siga as etapas a seguir:
📝 Entendendo o arquivo de serviço systemd
O arquivo de serviço que criaremos é um arquivo systemd unit. O systemd é o sistema de inicialização em muitas distribuições Linux atualmente. Nós só precisamos entender algumas partes importantes desse arquivo:
Before=ssh.service
: Definimos que esse serviço deve iniciar antes do serviço SSH.
ExecStartPre=/bin/rm -f /etc/ssh/ssh_host_*; /bin/ssh-keygen -A; /bin/systemctl restart ssh
: Essa linha de comando remove todas as chaves de host SSH existentes, gera novas chaves usando o comando ssh-keygen
e reinicia o serviço SSH para carregar as novas chaves.
ExecStart=/bin/systemctl disable --now regenerate-ssh-hostkeys.service
: Essa linha desabilita o próprio serviço após sua execução. Isso evita que as chaves de host SSH sejam redefinidas toda vez que a máquina é reiniciada.
🛠️ Configurando o arquivo de serviço
Agora, vamos criar e configurar o arquivo de serviço:
- Abra um editor de texto no servidor e crie um novo arquivo chamado
regenerate-ssh-hostkeys.service
.
- Cole o código fornecido neste link no arquivo.
- Salve o arquivo e feche o editor.
⚙️ Habilitando e verificando o arquivo de serviço
Vamos agora habilitar e verificar o arquivo de serviço:
- Mova o arquivo
regenerate-ssh-hostkeys.service
para o diretório /etc/systemd/system/
.
- Execute o comando
sudo systemctl daemon-reload
para informar ao systemd que ele precisa reavaliar seus arquivos de serviço.
- Verifique o status atual do serviço executando o comando
systemctl status regenerate-ssh-hostkeys.service
. Ele deve aparecer como disabled.
- Agora, habilite o serviço executando o comando
sudo systemctl enable regenerate-ssh-hostkeys.service
.
- Depois de habilitar o serviço, reinicie o servidor.
🔄 Criando uma imagem ou modelo
Agora que configuramos o ambiente e criamos o arquivo de serviço, podemos criar uma imagem ou modelo a partir da VM de exemplo. Siga as etapas a seguir para criar uma imagem ou modelo:
- Desligue a VM de exemplo.
- No Proxmox, clique com o botão direito na VM e selecione a opção "Convert to Template" (ou algo semelhante, dependendo da versão do Proxmox).
- Depois de converter para uma imagem ou modelo, você pode descartar a VM de exemplo, pois não será mais necessária.
Agora você pode criar instâncias dessa imagem ou modelo sem se preocupar com as chaves de host SSH duplicadas.
💻 Testando as chaves de host SSH em uma nova instância
Vamos testar agora se as chaves de host SSH são diferentes em novas instâncias criadas a partir da imagem ou modelo. Acesse o ambiente do Proxmox e siga estas etapas:
- Clone a imagem ou modelo para criar uma nova instância.
- Inicie a nova instância e aguarde até que esteja pronta.
- Obtenha o endereço IP da nova instância.
- Conecte-se à nova instância via SSH.
- Verifique as chaves de host SSH no diretório
/etc/ssh/
. Você verá que elas são diferentes das chaves da instância original.
Parabéns! Agora você tem um método automatizado para garantir que cada instância tenha seu próprio conjunto de chaves de host SSH.
Conclusão
Neste tutorial, mostrei como automatizar o processo de redefinição das chaves de host SSH em instâncias criadas a partir de uma imagem ou modelo. Automatizar esse processo garante que cada instância tenha seu próprio conjunto de chaves de host SSH, o que ajuda a evitar conflitos e problemas de segurança. Lembre-se de seguir as etapas cuidadosamente e testar o processo em seu próprio ambiente antes de aplicá-lo em um ambiente de produção.
Espero que este tutorial tenha sido útil para você. Se tiver alguma dúvida ou comentário, por favor, deixe-os abaixo. Obrigado por ler e até a próxima!
🔗 Recursos