I was thinking about having an encrypted USB flash memory where I would store some passwords and that kind of information. I want it to be encrypted just in case I lose it and someone finds it.

I was wondering if it's possible to "encrypt" using public keys like in SSH. I don't know if it would be called encryption but the idea would be that the only way to access to the files in the USB is having the key in your computer (just like as in SSH).

In case that's not possible, encrypting a single file with the same idea, would do it.

  • assuming you don't care about the actual SSH keys, consider something like GPG
    – Jeff Schaller
    Apr 18, 2016 at 17:00
  • Also, you might consider using a password safe (if you're not already) instead of storing passwords in plain text and encrypting the whole disk.
    – Liam
    Apr 18, 2016 at 21:40

2 Answers 2


You can use gpg for asymmetric encryption. Basically you do the following (after you generated a gpg key):

$ gpg -ea -r [email protected] file.ext

This will create an encrypted file called file.ext.asc in your current directory (-r specifies the recipient, in this case that's you). To decrypt do the following

 $ gpg -d file.ext.asc > file.asc
 You need a passphrase to unlock the secret key for user: "Real Name
 (Comment) <[email protected]>" 2048-bit ELG-E key, ID 7F72A50F, created
 2007-12-01 (main key ID 9B1386E2) 
 Enter passphrase: 


If you want to use this on file system level, you can combine this with the other answer. Generate a random key:

$ dd if=/dev/urandom of=random-key count=1024
$ gpg -ea -r [email protected] random-key

and use the following to create and unlock your file system

$ gpg -d random-key.asc | cryptsetup luksFormat /dev/sdXY -d -
$ gpg -d random-key.asc | cryptsetup luksOpen /dev/sdXY usbstick -d -

-d is shorthand for --key-file. Disclaimer: Those commands are untested. Read yourself into gpg first and try this without important data!


You can use cryptsetup to LUKS encrypt the USB drive and specify the key file when doing the LUKS format. I believe this should do the trick:

cryptsetup luksFormat /dev/sdXY --key-file=/path/to/keyfile

Then you can open it with:

cryptsetup luksOpen /dev/sdXY usbstick --key-file=/path/to/keyfile

After this you can proceed with partitioning.

  • Note that this will use your encrypted ssh key and will be symmetric - i.e. when you use your public key you will need your public key to decrypt.
    – Sebb
    Apr 18, 2016 at 18:06

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .