Existem soluções enlatadas para executar o sshd no initrd?

4

Isto é principalmente voltado para o Debian / Ubuntu, mas eu me sinto bastante experiente em uma variedade de distros para poder adaptar a solução para uma distro para outra.

Aqui está o meu cenário. Existem algumas situações em que o processo de inicialização irá deixá-lo no shell (geralmente busybox) do initrd. Mais notavelmente sempre que você executa um RAID de hardware para o qual os drivers precisam ser reconstruídos para cada nova revisão de kernel. Gostaria de poder acessar o sistema de recuperação da mesma forma que acessaria o sistema totalmente inicializado.

Eu acho que é possível colocar compilações estáticas do (s) shell (s) e sshd (OpenSSH ou dropbear) no initrd e tenho procurado por uma solução existente que eu possa ajustar às minhas necessidades.

Supondo que não exista uma solução existente (já que pesquisei por bastante tempo), o que preciso considerar além de usar construções estáticas onde for possível (ou fornecer as bibliotecas)? É razoável simplesmente armazenar em cache uma compilação estática de dropbear e usar /etc/initramfs-tools/hooks para incorporar isso junto com um "convertido" OpenSSH sshd_config e as chaves de host originais?

    
por 0xC0000022L 16.04.2014 / 13:50

1 resposta

0

O Ubuntu 16.04 contém um pacote chamado dropbear-initramfs que deve fornecer esse recurso.

Lightweight SSH2 server and client - initramfs integration dropbear is a SSH 2 server and client designed to be small enough to be used in small memory environments, while still being functional and secure enough for general use.

It implements most required features of the SSH 2 protocol, and other features such as X11 and authentication agent forwarding.

This package provides initramfs integration.

Os únicos itens que eu precisava ajustar além de instalar o pacote, onde:

  1. Remova o comentário do comentado DROPBEAR=y dentro de /etc/initramfs-tools/conf-hooks.d/dropbear
  2. Converter minhas chaves de host existentes (veja abaixo)
  3. Crie e preencha /etc/initramfs-tools/root/.ssh/authorized_keys . Para isso, optei por vincular-montar /root/.ssh em /etc/initramfs-tools/root/.ssh
  4. Um update-initramfs -u -k all final recriou todas as imagens initrd

Para converter as chaves, executei estes comandos:

/usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_host_rsa_key /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key
/usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_host_dsa_key /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key
/usr/lib/dropbear/dropbearconvert openssh dropbear /etc/ssh/ssh_host_ecdsa_key /etc/initramfs-tools/etc/dropbear/dropbear_ecdsa_host_key

Observação: os nomes dos arquivos de origem e de destino são diferentes. Então não faça suposições aqui. Além disso, /usr/lib/dropbear não está no meu PATH , então eu precisei fornecer o caminho completo para executar dropbearconvert .

    
por 26.10.2016 / 21:35