If I have an encrypted external disk (or an internal disk that is not in fstab), I see an entry for it in Nautilus -- with an entry like "X GB Encrypted Volume". I can click on this volume, and am prompted for a password to decrypt and mount the device.

But how do I do this from the command line?

This wiki page, and other docs I can find, only refer to GUI methods of decrypting the device; but this won't do in the context of headless servers or SSH logins. Is there a simple way to get devices to mount to automatic locations in /media just like they would with the GUI?

(I'm not asking about encrypted home directories -- I'm aware of ecryptfs-mount-private. This question is about additional encrypted volumes.)

11 Answers 11

up vote 48 down vote accepted

The steps in @Georg Schölly's answer did not work for me at the time, although they might work now, a few Ubuntu releases after. Back then, after the sudo mount /dev/mapper/my_encrypted_volume /media/my_device step I got the error:

mount: unknown filesystem type 'LVM2_member'

Unlocking and mounting the disk with udiskctl

Instead, I used udisksctl, a command-line interface that interacts with the udisksd service.

Here's what worked (/dev/sdb5 is the partition on my hard disk marked as crypt-luks):

udisksctl unlock -b /dev/sdb5
udisksctl mount -b /dev/mapper/ubuntu-root

After typing the first command, you'll be prompted for your encryption passphrase. Once the encrypted partition is unlocked, the second command will mount it. If that's successful, you'll end up with a message similar to this:

Mounted /dev/dm-1 at /media/dpm/e8cf82c0-f0a3-41b3-ab28-1f9d23fcfa72

From there I could access the data :)

Notes

  • The commands are executed without sudo.
  • The ubuntu-root naming might change between different versions of Ubuntu (e.g. I've seen it called system-root too). An easy way to find out the name is to run the following command after unlocking the LUKS partition:

    ls -la /dev/mapper

    Then looking at the output of the ls command, the name you'll need will be generally the one symlinked to /dev/dm-1

  • I've noticed a downside to using udisksctl, though. Once unlocked, the partition is mapped as a symlink in /dev/mapper. The name of that symlink becomes the UUID of the device. However, tools like initramfs-update expect the symlink to match the name in /etc/crypttab and will print an error unless the symlink is renamed. As an alternative, using cryptsetup luksOpen seems to set the symlink name correctly.
  • 1
    I think this is the best answer, because I suspect this is more or less what nautilus does using libudisks2. Also, I've tested this to work well as an unprivileged user. – Jaap Versteegh Aug 24 '15 at 14:52
  • 8
    I unfortunately get the error Object /org/freedesktop/UDisks2/block_devices/dm_2d3 is not a mountable filesystem. any advice? – wawa Dec 1 '15 at 14:41
  • 1
    @wawa I had the same problem and solved it in this answer askubuntu.com/a/895508/334823 – raphael Mar 22 '17 at 2:26
  • It's not clear to me what I should type in place of /dev/mapper/ubuntu-root If I simply type it I get an error. "Error looking up object for device /dev/mapper/ubuntu-root" – Selah Sep 27 '17 at 19:20
  • 1
    @Selah, I extended the answer to better explain what device path to use for the mount. To mwfearnley: it might be worth looking at the permissions of the user you were logged in as. – David Planella Jul 27 at 11:02

Your volume is probably encrypted with LUKS, here's how to mount it:

You need:

sudo apt-get install cryptsetup

To decrypt the volume:

sudo cryptsetup luksOpen /dev/sda1 my_encrypted_volume

Now you can mount it as usual:

sudo mkdir /media/my_device
sudo mount /dev/mapper/my_encrypted_volume /media/my_device

To lock the container again, it needs to be unmounted first:

sudo umount /media/my_device
sudo cryptsetup luksClose my_encrypted_volume

To automatically put it in the /media location, use the udisks tool

sudo udisks --mount /dev/mapper/my_encrypted_volume
  • So I can't do it as a non-privileged user, either, even though I could via the GUI? – cha Sep 30 '11 at 16:12
  • That actually depends on your system setting. I believe most commands should work as long as your system gives your user access to the devices. – Georg Schölly Sep 30 '11 at 19:45
  • 1
    Ubuntu 15.04 ships the udisks2 package in place of udisks, and the former renames the tool udisksctl. – skierpage Jun 29 '15 at 2:08
  • unfortunately did not work for me with ubuntu 16.04. mount: unknown filesystem type 'LVM2_member' – Selah Sep 27 '17 at 19:06
  • @Selah: Sounds like you're trying to decrypt something which is not a LUKS volume. Maybe you need to use something else than /dev/sda1. – Georg Schölly Sep 27 '17 at 19:14

If you get this error:

mount: unknown filesystem type 'LVM2_member'

run:

sudo apt-get install lvm2
sudo lvscan

then activate all LVM you see

sudo vgchange -ay

then re-run the mount:

sudo mount /dev/mapper/my_encrypted_volume /media/my_device
  • 5
    The last line is not necessarily correct, as you may still end up with the same error. Rather, mount one of the drives listed with lvscan instead of /dev/mapper/my_encrypted_volume – Sean Scott Aug 28 '17 at 16:27
  • This did not work for me. Same error mount: unknown filesystem type 'LVM2_member'. Perhaps because I am booting from a flash drive? – Selah Sep 27 '17 at 19:06
  • @SeanScott thank you so much... I used the installer to encrypt my drive now I am trying to recover data and have to newly learn these things... d'oh – CameronNemo Jul 12 at 19:01

One problem i ran into, was duplicate volume groups: Both my recovery system and the drive to be recovered were ubuntu systems with LVM. This is, why I had two ubuntu-vg volume groups (vgdisplay would display both, each with their own UUID, but i couldn't get to their logical volumes).

My solution builds on the answer of Georg:

  • Boot off a live-linux (so that you don't run into the duplicate volume group name)
  • sudo cryptsetup luksOpen /dev/sdaX my_encrypted_volume
  • enter your passphrase when prompted
  • sudo vgscan should now pick up the contained volumes/groups.

  • DRAGONS AHEAD: WE'RE NOW CHANGING THE VOLUME GROUP NAME. YOU WILL NOT BE ABLE TO BOOT THAT DRIVE AFTERWARDS!

    use sudo vgrename ubuntu-vg ubuntu-vg2 to rename the volume group.

    If you need to boot off that drive, you can do these steps again, but rename your volume group back to ubuntu-vg. A different possibility is to alter your boot configuration to the new vg-name.

Now that the duplicate vg-name is resolved, i can boot back into my regular system, redo the cryptsetup..., vgscan and then mount /dev/mapper/ubuntu--vg2-root anywhere you like.

  • 2
    Looks like you can also do sudo vgdispay to find the UUID and use that instead of the duplicate name in order to do the rename of just the one volume. That is, grabbing the UUID and then doing sudo vgrename <uuid> old worked for me. – mpontillo May 14 '16 at 0:17
  • I can't test Mike's suggestion right now, but If it works, it's better than renaming the volume group! – amenthes May 15 '16 at 14:52

sdb1 here is an example you should input your device name, none of this commands will require root privileges

unlock encrypted disk

udisksctl unlock -b /dev/sdb1

after inserting the correct passphrase it will output something like this: Unlocked /dev/sdb1 as /dev/dm-3

then mount it to /media/

udisksctl mount -b /dev/dm-3

it should output something like this: Mounted /dev/dm-3 at /media/yourUserName/sdb

to unmount it

udisksctl unmount -b /dev/dm-3

to lock it again

udisksctl lock -b /dev/sdb1
  • 1
    disksctl mount -b /dev/dm-4 Object /org/freedesktop/UDisks2/block_devices/dm_2d4 is not a mountable filesystem. – DevilCode Nov 23 '16 at 23:37
  • Sorry did you solve this issue? (with non mountable FS... as I am getting the same) – Oleg Tarasenko Feb 15 '17 at 16:56
  • 1
    Same problem, see this answer for something that worked for me askubuntu.com/a/895508/334823 – raphael Mar 22 '17 at 2:25

For those of us who don't want to use a GUI tool even to determine which partition is encrypted.

  • find any encrypted partitions

    lsblk -lf | grep LUKS
    

    -l requests the "list" format - we don't need the tree
    -f shows us the name of the file system too
    we get something like

    sdc2 crypto_LUKS b09d6209-......

  • unlock the partition that we want (in my case /dev/sdc2)

    udisksctl unlock -b /dev/sdc2
    

    -b means that we are giving the path to a block device
    after entering the passphrase we get an affirmative response with the necessary info for the next step:

    Unlocked /dev/sdc2 as /dev/dm-6

  • mount the newly created device (dm stand for device manager)

    udisksctl mount -b /dev/dm-6
    

    Again we get an affirmative response with useful info:

    Mounted /dev/dm-6 at /media/g/Data.

    (g being my username on this system, Data is the label I used for that partition)

    It may be the case that your desktop system/file manager has already automatically mounted the device, or you did it yourself before. Then you get something like

    Error mounting /dev/dm-6: GDBus.Error:org.freedesktop.UDisks2.Error.AlreadyMounted: Device /dev/dm-6 is already mounted at '/media/g/Data'.

    This is no problem, you can access the data from the encrypted partition anyway.

  • access the data: ls /media/g/Data
  • unmount the device again (use the same name you used for mounting, the command is unmount, not umount :-) )

    udisksctl unmount -b /dev/dm-6
    

    If the device is not busy you will get

    Unmounted /dev/dm-6.

  • Now lock the partition again (you have to remember the name of the partition)

    udisksctl lock -b /dev/sdc2
    

    You will get

    Locked /dev/sdc2.

  • optionally power down the complete external disk

    udisksctl power-off -b /dev/sdc
    

    With a graphical desktop you may get an error here:

    Error powering off drive: The drive in use: Device /dev/sdc3 is mounted (udisks-error-quark, 14)

    In that case you can use udisksctl to unmount the partitions one by one until you succeed. The udisksctl power-off does not return any messages.

I went into several paths from the previous answers and only combination of the previous answers worked for me. He what I did and what went OK, and what went wrong and my workaround.

I have an LUKS encrypted hard disk that I need to mount from a live boot USB for Ubuntu 15.10. To do so I started with the following command,

udisksctl unlock -b /dev/sda3

where sda3 is the encrypted partition. This command didn't work with me and I am not sure why, so I used the following command:

sudo cryptsetup luksOpen /dev/sda1 my_encrypted_volume

it worked with me and I didn't need to install it as it was there in the live boot.

Now, I need to mount the HD, and this was not a straight forward thing: I tried:

sudo mkdir /media/my_device
sudo mount /dev/mapper/my_encrypted_volume /media/my_device

But the second command didn't work with me, and hence I have to find a work around which is the following:

sudo udisksctl mount -b /dev/mapper/ubuntu--vg-root

That was my path .. but you can use the path dev/mapper/ubuntu and then double tab to see the rest of options. This mounted the HDD as:

Mounted /dev/dm-1 at /media/root/03cf6b80-fa7c-411f-90b9-42a3398529ce

Then I used the following command to mount it as /media/my_device as following:

sudo mount /dev/dm-1 /media/my_device/

which worked fine.

In Summary

sudo cryptsetup luksOpen /dev/sda1 my_encrypted_volume
sudo mkdir /media/my_device
sudo udisksctl mount -b /dev/mapper/ubuntu--vg-root
sudo mount /dev/dm-1 /media/my_device/

All answers above took the assumption that the user already knows which partition is the encrypted one. Coming from someone that doesn't like the command line so much, I was expecting some user-friendly answer... So my 2cents here.

  1. Open the "disks" application of ubuntu.
  2. Locate your mounted hard disk in the left panel.
  3. Click on the partition that has "LUKS" in its name: this way you can see its mount point in the "Device" text below (in my case: /dev/sdb4).

Then I tried to mount it like adviced above:

$ sudo cryptsetup luksOpen /dev/sdb4 someNameForMyVolume
Enter passphrase for /dev/sdb4: 

But got this error:

Cannot use device /dev/sdb4 which is in use (already mapped or mounted).

Ok, so I guess nautilus has already tried to mount it (because it actually prompted me for the password as I connected the USB, even if it didn't end up showing the decrypted tree). However, the error message is not really helpful because it doesn't tell me where it's already mapped/mounted. But this command helps in this case:

$ udisksctl unlock -b /dev/sdb4
Passphrase: 
Error unlocking /dev/sdb4: GDBus.Error:org.freedesktop.UDisks2.Error.Failed: Device /dev/sdb4 is already unlocked as /dev/dm-3

Aha! So it's /dev/dm-3.

However when trying to mount it, it doesn't work:

$ udisksctl mount -b /dev/dm-3
Object /org/freedesktop/UDisks2/block_devices/dm_2d3 is not a mountable filesystem.

After much tinkering, I found out that I was running into the duplicate volume groups problem (described above by @amenthes) because the commands sudo vgscan -v and sudo vgdisplay were showing two entries with the same volume group name. However, I found a better way to deal with it than his method (no need to boot into a LiveCD to rename volumegroups!), in this link, which I'll quote above (just in case that link gets broken...):

If you run ls -la /dev/mapper/ you should see a luks-xxxxxx-xxxxx-xxxx or some such file. That's the mapping that was created when Ubuntu prompted for the encryption password with a dialog but failed to open it (all the dialog did was to call luksOpen and map it to that /dev/mapper/luks-xxx file). Now:

  1. Make sure your physical volume is available by running the sudo pvdisplay command. It should be /dev/mapper/luks-xxx-whatever.
  2. Get the uuid of the volume by running sudo pvs -o +vg_uuid. The uuid will be the value displayed all the way to the right, containing 7 dash-delimited values. Copy those somewhere as we'll be using them in the next step. DO NOT CONFUSE UUIDS AND COPY DOWN THE WRONG ONE. Only copy the one for your current /dev/mapper/luks-xxx-whatever device.
  3. Change the volume group for your old disk by running the following command sudo vgrename UUIDOFYOURDISKHERE oldhd You can change the "oldhd" to whatever you want so long as it's differing from the volume group name of your current disk. Performing this step removes the conflict with volume group names which will allow you to now make volumes available.
  4. Run the command vgchange -a y to make the volumes active.
  5. Create a folder for a mountpoint somewhere, e.g.: sudo mkdir /media/<yourUserName>/someDir
  6. Mount it: sudo mount /dev/oldhd/root /mnt/oldhd.
  7. After working with your files, you should rename your volumegroup back to ubuntu-vg if you want the volume to still be bootable.

Was looking for the same...

The mkdir steps were my reason to look further, also I've modified policykit to allow my user to mount without asking first for the root passwd and then for the encrypted volume password, so the sudo was also over kill.

My solution I found was the use of gvfs-mount from the gvfs-bin package. Now with a gvfs-mount -d /dev/sda7 I'm asked for the encrypted password only and it's mounted under /media/VOLUME_LABEL.

  • Not getting luck with this. Steps I took: first, cat /proc/partitions to identify the /dev label for the drive. Second, gvfs-mount -d /dev/sdf1. This gives the error "No volume for device file /dev/sdf1". This looks close, though! – cha Jun 20 '12 at 14:18
  • It works for me. Strangely not through /dev/disks/by-label or /by-uuid, but only by /dev/sdxx – Redsandro Mar 4 '13 at 17:55
  • The message "No volume for device file /dev/sdf1" will be present until you delete according device from /etc/fstab. After that gvfs-mount works as designed – dbzix Mar 25 '13 at 8:47
  • FYI: gvfs-mount -d /dev/sdaX worked perfectly for me in Linux Mint 17.3 -- No password required as with the GUI. – Jonathan Cross May 3 '16 at 19:33

On my chromebook with (crouton) Ubuntu Xenial 16.04 I find that when I issue:

sudo cryptsetup luksOpen /dev/sda1 my_encrypted_volume

per the above posting and enter my passphrase, I get "No key available with this passphrase." However, by accident I've found (and very strange it is!) the whole thing works when I add "--debug" to the cryptsetup command! I am then able to mount the volume and access the files.

Asking the file manager Thunar to do the mounting results "Not authorized to perform operation." error. I am unable to figure a way around that, but since I can do the mount at the command line, that's somewhat acceptable.

Ok, so i have a working solution guys, as discussed previously the reason you're getting mount: unknown filesystem type 'LVM2_member' error is because by default your linux machine assigns the same VG name to external hard drive, hence all the partition on external HDD are inactive.

This is what you need to do:

  1. unplug your external hard-drive and take note of your internal VG UUID using (sudo vgdisplay command),
  2. now plug in your external hard drive and rename the VG group of your EXTERNAL HDD (not internal, this will break your box) (vgrename UUID_Number [new-group]).
  3. Check that new name is updated in VGdiplay, now activate new VGroup (vgchange [new_group] -a y), check all partitions are activated (lvscan).
  4. Now you should see all your partitions under ls /dev/mapper/[new_group], all you need to do is mount the partition (mount -t ext4 /dev/mapper/[new_group]-data /zez)

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.