Parece que o cryptsetup requer que o cabeçalho LUKS seja um arquivo ou dispositivo regular. Se você precisar fornecer o cabeçalho LUKS como uma saída de um processo / fluxo, poderá contornar a restrição enviando-a para /dev/ram
cat LUKS-HEADER > /dev/ram0
(desde que o seu kernel suporte ramdisk)
Então você pode simplesmente usar o seu comando cryptsetup como:
cryptsetup luksOpen /dev/sdb1 sdb1 --header /dev/ram0
Tenha em mente que o cabeçalho LUKS permanecerá em /dev/ram0
disk até que você libere o espaço. Para liberar a memória, você pode usar o comando blockdev
:
blockdev -v --flushbufs /dev/ram0