Warum möchtest du das eigentlich per Cron machen,
@DFFVB? Ein Cronjob weiß nicht, ob das Gerät an ist (würde also dauernd ins Leere feuern wenn nicht) oder ob LUKS schon geöffnet ist. Und wenn du keine zu hohe Verzögerung zwischen anschalten und entschlüsseln haben willst, müsste dieser Job im Prinzip so oft wie möglich, also minütlich, laufen. Das ist nicht elegant.
Als einfache Alternative (also nicht so hochentwickelt wie die native Integration einer remoten Schlüsseldatei in luks bzw. die initrd, was ich aus dem Kopf auch nicht erklären kann) könntest du ein Skript auf deinem Rechner anlegen, das diesen SSH-Befehl, den du bisher ausführst, enthält. Und diesen Skript kannst du dann von deinem Server aus ebenfalls über ssh starten. Dadurch wird das nur dann ausgeführt, wenn es wirklich benötigt wird.
Also Rechner A enthält das Unlock-Skript, z.B. unter /usr/local/bin/unlock-server.sh:
Code:
#!/usr/bin/sh
# Werte einsetzen
SERVER=<Hostname oder IP des Servers>
NAME=<Name des entschlüsselten LUKS-Devices>
KEYFILE=<Pfad zum Keyfile>
MOUNTPOINT=<Mountpfad des LUKS-Containers>
cat "$KEYFILE" | ssh root@$SERVER "cryptsetup luksOpen --key-file - /path/to/device $NAME && mount /dev/mapper/$NAME $MOUNTPOINT"
Und dein Server führt beim Hochfahren einmal
ssh rechnerA /usr/local/bin/unlock-server.sh aus. Wenn du paranoid sein willst, kann man in ssh den Zugriff für einen User auf einen Befehl begrenzen, sodass man den SSH-Schlüssel nur für das Ausführen dieses einen Skripts nutzen kann.