Quand on a un serveur sous debian, avec le disque chiffré grâce à LUKS, il faut avoir un écran/clavier pour taper le mot de passe au boot.
Pas très pratique pour un serveur !

Mais une solution existe pour cela: le paquet dropbear-initramfs.

Il va faire en sorte que lorsque la machine démarre, dropbear (un serveur ssh très light) soit lancé, car intégré dans l'initramfs.
Ce qui va nous permettre de s'y connecter en SSH (avec authentification par clé), rentrer le mot de passe pour déchiffrement, et qu'au final le système démarre :)

Et comme je fais cela souvent, il m'arrive d'oublier une étape, en voici dont la liste :p

Pour ce faire, 5 étapes:

  1. installer dropbear
  2. configurer l'authentification
  3. configurer dropbear
  4. configurer l'initramfs
  5. désactiver dropbear pour que ssh se lancer normalement après

1/ installation

on l'installe simplement en une commande :

apt install dropbear dropbear-initramfs

2/ Authentification

Afin de s'authentifer par clé, on créé le fichier /etc/dropbear/initramfs/authorized_keys, dans lequel on inscrit notre clé publique (généralement dans ~/.ssh/id_rsa.pub)

3/ Configuration de dropbear

On édite le fichier /etc/dropbear/initramfs/dropbear.conf et on décommente la ligne DROPBEAR_OPTIONS.
Et on indique les options entre guillemets. au final, la ligne doit ressembler à ceci:

DROPBEAR_OPTIONS="-RFEsjk -c /bin/cryptroot-unlock"

ces options permettent pluisieurs choses, notemment de ne pas mettre dropbear en background, et qu'il affiche ce qui se passe à l'écran (dans stderr), de désactiver l'authentification par password, et le port forwarding.
Enfin et surtout la derniere option permet de demander directemnet le mot de passe LUKS, sans qu'on aie accès à un shell busybox ;)

4/ Configuration de l'initramfs

Dropbear étant maintenant configuré, on passe à l'initramfs.
On édite pour cela le fichier /etc/initramfs-tools/initramfs.conf, et on rajoute une ligne à la fin

IP=192.168.30.27::192.168.30.1:255.255.255.0::eth0:off

ici on indique que l'initramfs doit monter l'interface réseau eth0 avec l'ip 192.168.30.27; une gateway en 192.168.30.1 et un netmask à 255.255.255.0.
Cette partie est tres importante, car sans elle la machine n'aura pas de réseau à ce stade du démarrage.

Enfin, on met à jour l'initramfs:

update-initramfs -u

5/ Désactivation de dropbear

Finalement, on désactive dropbear pour qu'il ne se lance pas au démarrage. il doit etre lancé uniquement pendant la phase de l'initramfs, et doit se désactiver après.
Sans quoi, sshd ne pourra pas démarrer :)

Si vous utilisez systemd:

systemctl disable dropbear.service

Si vous utilisez sysvinit:

update-rc.d -f dropbear remove

Et voila, c'est terminé. :)

Désormais, lorsque la machine démarrera, vous pourrez toujours taper votre mot de passer au clavier si besoin, mais vous pourrez surtout vous y connecter en ssh, et une fois identifié, un prompt vous sera proposé pour taper votre mot de passe LUKS.