Depois do que parece ser uma eternidade de mergulho profundo no Google e tentativa e erro, finalmente consegui descobrir isso.
Aqui estão os passos que dei em relação aos passos que descrevi na pergunta:
- Removido o script no post do blog mencionado na pergunta
- No fogo cruzado de tentativa e erro, acabamos removendo
ifconfig eth0 0.0.0.0 down
deusr/share/initramfs-tools/scripts/init-bottom/dropbear
que a etapa 6 do post do blog delineou; Eu nunca adicionei de volta, mas nunca precisei -
Modificado e adicionado os seguintes scripts de este post :
# Comment lines in /usr/share/initramfs-tools/scripts/local-top/cryptroot as follows: # if [ -z "$cryptkeyscript" ]; then cryptkey="Unlocking the disk $cryptsource ($crypttarget)\nEnter passphrase: " #if [ -x /bin/plymouth ] && plymouth --ping; then # cryptkeyscript="plymouth ask-for-password --prompt" # cryptkey=$(echo -e "$cryptkey") #else cryptkeyscript="/lib/cryptsetup/askpass" #fi fi # Add /usr/share/initramfs-tools/hooks/cryptroot_unlock and make executable # # Prompt to unlock LUKS encrypted root partition remotely # # See linked post for sources and acknowledgements # #!/bin/sh PREREQ="" prereqs() { echo "$PREREQ" } case $1 in prereqs) prereqs exit 0 ;; esac . /usr/share/initramfs-tools/hook-functions # # Begin real processing # SCRIPTNAME=unlock # 1) Create script to unlock luks partitions cat > ${DESTDIR}/bin/${SCRIPTNAME} << '__EOF' #!/bin/sh /lib/cryptsetup/askpass "Enter volume password: " > /lib/cryptsetup/passfifo __EOF chmod 700 ${DESTDIR}/bin/${SCRIPTNAME} # 2) Enhance Message Of The Day (MOTD) with info how to unlock luks partition cat >> ${DESTDIR}/etc/motd << '__EOF' To unlock root-partition run "${SCRIPTNAME}" __EOF # Add /usr/share/initramfs-tools/scripts/local-bottom/dropbear_kill_clients and make executable # # # Kills all DropBear client sessions if InitRAMFS is left # # See linked post for sources and acknowledgements # #!/bin/sh PREREQ="" prereqs() { echo "$PREREQ" } case $1 in prereqs) prereqs exit 0 ;; esac # # Begin real processing # NAME=dropbear PROG=/sbin/dropbear # get all server pids that should be ignored ignore="" for server in 'cat /var/run/${NAME}*.pid' do ignore="${ignore} ${server}" done # get all running pids and kill client connections for pid in 'pidof "${NAME}"' do # check if correct program, otherwise process next pid grep -F -q -e "${PROG}" "/proc/${pid}/cmdline" || { continue } # check if pid should be ignored (servers) skip=0 for server in ${ignore} do if [ "${pid}" == "${server}" ] then skip=1 break fi done [ "${skip}" -ne 0 ] && continue # kill process echo "$0: Killing ${pid}..." kill -KILL ${pid} done
Depois de modificar e adicionar esses scripts, o dropbear foi capaz de iniciar, mas meu dispositivo de rede não estava conseguindo se conectar à rede, então ainda não consegui me conectar ao servidor.
Eu finalmente descobri usando ls /sys/class/net
que meu adaptador de rede não era chamado eth0
; aparentemente, essa é uma notação antiga que não é mais usada por versões recentes do Ubuntu, e como todas as postagens que eu encontrei são antigas, se não antigas, eth0
é tudo o que eu encontrei.
Então, armado com essa informação e mais alguns trechos que eu encontrei de outras fontes, eu modifiquei initramfs.conf
da seguinte forma:
-
Modificou a parte
DEVICE=
de/etc/initramfs-tools/initramfs.conf
para ler:DEVICE=<name of network adapter discovered using ls /sys/class/net> IP=<Static IP Address>::<Default Gateway>:<Subnet Mask>::<name of network adapter>:off
-
Atualizado em
initramfs
(sudo update-initramfs -u
)
Agora o dropbear se conecta à rede e eu posso conectar ao servidor e desbloquear remotamente.