CRYPTSETUP-LUKSREMOVEKEY(8)

πŸ’– CRYPTSETUP-LUKSREMOVEKEY πŸ’–

okay bestie, so this is a page from the cryptsetup manual set (maintenance commands energy πŸ’…), and it's all about cryptsetup luksRemoveKey β€” the lil command that yeets a passphrase out of a LUKS device. let's get into it 🫢


✨ NAME ✨

cryptsetup-luksRemoveKey β€” remove the supplied passphrase from the LUKS device πŸ’€πŸ”‘


✨ SYNOPSIS ✨

cryptsetup luksRemoveKey [<options>] <device> [<key file with passphrase
to be removed>]

✨ DESCRIPTION ✨

So what it does: it removes the supplied passphrase from the LUKS device. That passphrase you're yeeting? You can hand it over interactively, as the positional argument, or through --key-file. pick your fighter πŸ’…

If you read the passphrase from stdin (that's with no further argument, or with '-' as an argument to --key-file), then batch-mode (-q) gets implicitly switched on β€” and like, no warning will be given when you remove the last remaining passphrase from a LUKS container. And bestie, removing that last passphrase makes the LUKS container permanently inaccessible. no takebacks. it's giving irreversible 😭

Also important: this operation only removes the key in a particular keyslot. It does not wipe any encrypted data. the data stays, the key just dips πŸ¦‹

And <options> can be: [--key-file, --keyfile-offset, --keyfile-size, --header, --disable-locks, --type, --timeout, --verify-passphrase]. that's the whole squad πŸŽ€


✨ OPTIONS ✨

  • --batch-mode, -q β€” Suppresses all confirmation questions. Use with care! πŸ’€ If the --verify-passphrase option is not specified, this option also switches off the passphrase verification.
  • --debug or --debug-json β€” Run in debug mode with full diagnostic logs. Debug output lines are always prefixed by #. If --debug-json is used, additional LUKS2 JSON data structures are printed. πŸ”
  • --disable-locks β€” Disable lock protection for metadata on disk. This option is valid only for LUKS2 and is ignored for other formats.
⚠️ WARNING: Do not use this option unless you run cryptsetup in a restricted environment where locking is impossible to perform (where /run directory cannot be used).
  • --header <device or file storing the LUKS header> β€” Use a detached (separated) metadata device or file where the LUKS header is stored. This option allows one to store the ciphertext and LUKS header on different devices. πŸ—‚οΈ

For commands that change the LUKS header (e.g., luksAddKey), specify the device or file with the LUKS header directly as the LUKS device.

  • --help, -? β€” Show help text and default parameters. πŸ†˜
  • --key-file, -d _file_ β€” Read the passphrase from the file.

If the name given is "-", then the passphrase will be read from stdin. In this case, reading will not stop at newline characters.

See section NOTES ON PASSPHRASE PROCESSING in cryptsetup(8) for more information. πŸ“–

  • --keyfile-offset _value_ β€” Skip _value_ bytes at the beginning of the key file.
  • --keyfile-size, -l _value_ β€” Read a maximum of _value_ bytes from the key file. The default is to read the whole file up to the compiled-in maximum that can be queried with --help. Supplying more data than the compiled-in maximum aborts the operation.

This option is useful to cut trailing newlines, for example. If --keyfile-offset is also given, the size count starts after the offset. βœ‚οΈ

  • --timeout, -t _seconds_ β€” The number of seconds to wait before a timeout on passphrase input via terminal. It is relevant every time a passphrase is asked. It has no effect if used in conjunction with --key-file.

This option is useful when the system should not stall if the user does not input a passphrase, e.g., during boot. The default is a value of 0 seconds, which means to wait forever. ⏳

  • --type _type_ β€” Specifies required device type, for more info, read the BASIC ACTIONS section in cryptsetup(8).
  • --usage β€” Show short option help.
  • --verify-passphrase, -y β€” When interactively asking for a passphrase, ask for it twice and complain if both inputs do not match. Ignored on input from file or stdin. βœ…
  • --version, -V β€” Show the program version.

✨ REPORTING BUGS ✨

Found a bug? Report bugs at the cryptsetup mailing list <cryptsetup@lists.linux.dev> or in the Issues project section <https://gitlab.com/cryptsetup/cryptsetup/-/issues/new>. πŸ›

Also, please attach the output of the failed command with the --debug option added. it helps so much, fr fr 🫢


✨ SEE ALSO ✨


✨ CRYPTSETUP ✨

Part of the cryptsetup project <https://gitlab.com/cryptsetup/cryptsetup/>. πŸ‘‘


and that's the whole page, bestie!! this one came from cryptsetup 2.8.8, dated 2026-09-07, and it lives under the manual page name CRYPTSETUP-LUKSREMOVEKEY(8). slay, go remove those keys responsibly πŸ’–βœ¨πŸ”‘

πŸ“¦ where this page comes from