Смонтировать зашифрованные тома из командной строки?


86

Если у меня есть зашифрованный внешний диск (или внутренний диск, который не находится в fstab), я вижу запись для него в Nautilus - с записью типа «X GB Encrypted Volume». Я могу нажать на этот том, и мне будет предложено ввести пароль для расшифровки и подключения устройства.

Но как мне это сделать из командной строки?

Эта вики-страница и другие документы, которые я могу найти, относятся только к GUI-методам дешифрования устройства; но это не будет сделано в контексте безголовых серверов или SSH-логинов. Есть ли простой способ заставить устройства монтироваться в автоматические места так /mediaже, как это было бы с графическим интерфейсом?

(Я не спрашиваю о зашифрованных домашних каталогах - я в курсе ecryptfs-mount-private. Этот вопрос касается дополнительных зашифрованных томов.)


+1 за различие между шифрованием файловых систем в целом и зашифрованными домашними каталогами
XavierStuvw

Продолжает. Различие стало актуальным сейчас, когда Ubuntu 18.04 понизил поддержку шифрования в одном каталоге в пользу полного шифрования диска, согласно askubuntu.com/q/1030572/446253 Для некоторых, в том числе и для меня, это является источником трудностей при переходе на 18.04 без проблем
XavierStuvw

Ответы:


62

Шаги в ответе @Georg Schölly не работали в то время, хотя они могли бы сработать и сейчас, через несколько выпусков Ubuntu после. Тогда, после sudo mount /dev/mapper/my_encrypted_volume /media/my_deviceшага, я получил ошибку:

mount: неизвестный тип файловой системы 'LVM2_member'

Разблокировка и монтирование диска с помощью udiskctl

Вместо этого я использовал udisksctlинтерфейс командной строки, который взаимодействует со udisksdслужбой.

Вот что сработало ( /dev/sdb5раздел на моем жестком диске помечен как crypt-luks):

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

После ввода первой команды вам будет предложено ввести пароль для шифрования. Как только зашифрованный раздел разблокирован, вторая команда смонтирует его. Если это успешно, вы получите сообщение, похожее на это:

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

Оттуда я мог получить доступ к данным :)

Блокировка диска с помощью udiskctl

Размонтировать устройство:

udisksctl unmount -b /dev/mapper/ubuntu--vg-root

ubuntu-vgСначала вам нужно деактивировать все логические тома в группе томов. В противном случае вы получите сообщение об ошибке «Устройство занято», если попытаетесь заблокировать его ( дополнительная информация ):

sudo lvchange -an ubuntu-vg

Тогда вы сможете заблокировать зашифрованный раздел

udisksctl lock -b /dev/sdb5

Примечания

  • Эти udisksctlкоманды выполняются без sudo .
  • Имена устройств отображения : ubuntu--vg-rootимена могут меняться в разных выпусках Ubuntu (например, я видел, как он вызывался system-rootи ubuntu-rootтоже). Простой способ узнать имя - запустить следующую команду после разблокировки раздела LUKS :

    ls -la /dev/mapper

    Затем, посмотрев на вывод lsкоманды, вам обычно нужно имя, которое символически связано с/dev/dm-1

  • Имена устройств отображения, альтернатива : альтернативой предыдущей команде является запуск:

    lsblk -e7

    Там вы сможете увидеть отображение имени устройства в виде дерева. Эта -e 7опция используется для исключения петлевых устройств (ID 7), созданных установленными привязками, из вывода. Просто чтобы меньше было беспорядка.

  • Имена логических томов : вы можете запустить sudo lvsкоманду, чтобы узнать имена групп томов и логических томов
  • Приложение Disks : приложение GNOME Disks не отключает логические тома автоматически перед блокировкой раздела. Даже если вы успешно разблокировали раздел через графический интерфейс, вам нужно будет перейти в командную строку и выполнить sudo lvchange -an ubuntu-vgкоманду, прежде чем вы сможете заблокировать его из графического интерфейса.

1
Я думаю, что это лучший ответ, потому что я подозреваю, что это более или менее то, что nautilus делает с помощью libudisks2. Кроме того, я проверил это, чтобы работать как непривилегированный пользователь.
Яап Верстег

9
Я, к сожалению, получить ошибку Object /org/freedesktop/UDisks2/block_devices/dm_2d3 is not a mountable filesystem.любой совет?
Вава

1
@wawa У меня была такая же проблема , и решить ее в этом ответе askubuntu.com/a/895508/334823
Рафаил

2
Забегая вперед на 5 лет, мне снова пришлось спасать зашифрованный раздел. Я использовал USB-флешку с Ubuntu 18.04 и следовал тем же шагам, которые я описал тогда. Как и прежде, они работали хорошо, и мне не нужно sudoбыло их выполнять.
Дэвид Планелла

1
@ Селах, я расширил ответ, чтобы лучше объяснить, какой путь устройства использовать для монтирования. To mwfearnley: возможно, стоит взглянуть на разрешения пользователя, под которым вы вошли.
Дэвид Планелла

87

Ваш том, вероятно, зашифрован с помощью LUKS, вот как его смонтировать:

Тебе нужно:

sudo apt-get install cryptsetup

Чтобы расшифровать том:

sudo cryptsetup luksOpen /dev/sda1 my_encrypted_volume

Теперь вы можете установить его как обычно:

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

Чтобы снова заблокировать контейнер, его нужно сначала размонтировать:

sudo umount /media/my_device
sudo cryptsetup luksClose my_encrypted_volume

Чтобы автоматически поместить его в /mediaлокацию, используйте инструмент udisks

sudo udisks --mount /dev/mapper/my_encrypted_volume

Так что я не могу сделать это как непривилегированный пользователь, хотя я мог бы через графический интерфейс?
тя

Это на самом деле зависит от настроек вашей системы. Я считаю, что большинство команд должно работать, пока ваша система предоставляет пользователю доступ к устройствам.
Георг Шолли

1
Ubuntu 15.04 поставляет udisks2пакет вместо udisks, а первый переименовывает инструмент udisksctl.
skierpage

к сожалению, у меня не работает Ubuntu 16.04. mount: неизвестный тип файловой системы 'LVM2_member'
Selah

1
Это сработало для меня! askubuntu.com/questions/895478/…
Selah

22

Если вы получили эту ошибку:

mount: unknown filesystem type 'LVM2_member'

бегать:

sudo apt-get install lvm2
sudo lvscan

затем активируйте все LVM, которые вы видите

sudo vgchange -ay

затем снова запустите монтирование:

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

7
Последняя строка не обязательно правильная, так как вы все равно можете получить ту же ошибку. Скорее, смонтировать один из дисков, перечисленных с lvscan вместо/dev/mapper/my_encrypted_volume
Weasemunk

Это не сработало для меня. Та же ошибка монтирования: неизвестный тип файловой системы 'LVM2_member'. Возможно, потому что я загружаюсь с флешки?
Selah

@SeanScott большое спасибо ... Я использовал установщик для шифрования своего диска, сейчас я пытаюсь восстановить данные и должен заново изучить эти вещи ... d'oh
CameronNemo

13

Одной из проблем, с которой я столкнулся, были дублированные группы томов : и моя система восстановления, и диск, который нужно восстановить, были системами Ubuntu с LVM. Вот почему у меня было две ubuntu-vgгруппы томов ( vgdisplayотображались обе, каждая со своим UUID, но я не мог добраться до их логических томов).

Мое решение основано на ответе Георга:

  • Загрузитесь с live-linux (чтобы вы не столкнулись с повторяющимся именем группы томов)
  • sudo cryptsetup luksOpen /dev/sdaX my_encrypted_volume
  • введите пароль при появлении запроса
  • sudo vgscan Теперь следует подобрать содержащиеся тома / группы.

  • Впереди драконы: теперь мы меняем название группы VOLUME. ВЫ НЕ МОЖЕТЕ ЗАГРУЗИТЬ ЭТО ДРАЙВ ПОСЛЕ!

    используйте sudo vgrename ubuntu-vg ubuntu-vg2для переименования группы томов.

    Если вам нужно загрузиться с этого диска, вы можете сделать эти шаги снова, но переименуйте вашу группу томов обратно в ubuntu-vg. Другая возможность - изменить конфигурацию загрузки на новое имя vg.

Теперь, когда имя дубликата В. решено, я могу загрузиться обратно в мою обычную систему, переделывать cryptsetup..., vgscanа затем смонтировать в /dev/mapper/ubuntu--vg2-rootлюбом месте вы хотите.


2
Похоже, вы также sudo vgdispayможете найти UUID и использовать его вместо дублирующего имени, чтобы переименовать только один том. То есть захват UUID и последующее выполнение sudo vgrename <uuid> oldработали на меня.
mpontillo

Я не могу проверить предложение Майка прямо сейчас, но если оно работает, это лучше, чем переименование группы томов!
августа

5

Вот пример sdb1, вы должны ввести имя вашего устройства, ни одна из этих команд не потребует прав root

разблокировать зашифрованный диск

udisksctl unlock -b /dev/sdb1

после вставки правильной парольной фразы она выдаст что-то вроде этого: Unlocked / dev / sdb1 как / dev / dm-3

затем подключите его к / media /

udisksctl mount -b /dev/dm-3

он должен вывести что-то вроде этого: Монтируется / dev / dm-3 в / media / yourUserName / sdb

размонтировать его

udisksctl unmount -b /dev/dm-3

снова заблокировать

udisksctl lock -b /dev/sdb1

2
diskctl mount -b / dev / dm-4 Объект / org / freedesktop / UDisks2 / block_devices / dm_2d4 не является монтируемой файловой системой.
DevilCode

Извините, вы решили эту проблему? (с не монтируемым FS ... как я получаю то же самое)
Олег Тарасенко

1
Те же проблемы, увидеть этот ответ на то , что работал для меня askubuntu.com/a/895508/334823
Raphael

3

Все ответы выше предполагали, что пользователь уже знает, какой раздел является зашифрованным. Исходя из того, кому не очень нравится командная строка, я ожидал какого-то удобного для пользователя ответа ... Итак, мои 2cents здесь.

  1. Откройте приложение «Диски» в Ubuntu.
  2. Найдите ваш смонтированный жесткий диск в левой панели.
  3. Нажмите на раздел с именем «LUKS»: таким образом, вы можете увидеть его точку монтирования в тексте «Device» ниже (в моем случае:) /dev/sdb4.

Затем я попытался смонтировать его, как указано выше:

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

Но получил эту ошибку:

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

Итак, я предполагаю, что nautilus уже попытался смонтировать его (потому что он фактически запрашивал у меня пароль при подключении USB, даже если он не отображал расшифрованное дерево). Тем не менее, сообщение об ошибке не очень полезно, потому что оно не говорит мне, где оно уже сопоставлено / смонтировано. Но эта команда помогает в этом случае:

$ 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

Ага! Так и есть /dev/dm-3.

Однако при попытке смонтировать его не получается:

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

После долгих переделок я обнаружил, что duplicate volume groupsстолкнулся с проблемой (описанной выше @amenthes), потому что команды sudo vgscan -vи sudo vgdisplayпоказывали две записи с одинаковым именем группы томов. Тем не менее, я нашел лучший способ справиться с этим, чем его метод (не нужно загружаться в LiveCD для переименования групп томов!), В этой ссылке , которую я процитирую выше (на случай, если эта ссылка будет разорвана ...) :

Если вы запустите, ls -la /dev/mapper/вы должны увидеть luks-xxxxxx-xxxxx-xxxxили какой-то такой файл. Это отображение, которое было создано, когда Ubuntu запросил пароль шифрования с диалоговым окном, но не смог его открыть (все, что он сделал, - это позвонил luksOpenи сопоставил его с этим файлом / dev / mapper / luks-xxx). В настоящее время:

  1. Убедитесь, что ваш физический том доступен, запустив sudo pvdisplayкоманду. Это должен быть / dev / mapper / luks-xxx-что угодно.
  2. Получить UUID тома, запустив sudo pvs -o +vg_uuid. Значение uuid будет отображаться полностью вправо и содержать 7 значений, разделенных тире. Скопируйте их куда-нибудь, так как мы будем использовать их на следующем шаге. НЕ ЗАМЫСЛЯЙТЕ UUIDS И КОПИРУЙТЕ НЕПРАВИЛЬНО. Скопируйте только один для вашего текущего устройства / dev / mapper / luks-xxx-независимо.
  3. Измените группу томов для своего старого диска, выполнив следующую команду. sudo vgrename UUIDOFYOURDISKHERE oldhdВы можете изменить «oldhd» на любое другое, если оно отличается от имени группы томов на вашем текущем диске. Выполнение этого шага устраняет конфликт с именами групп томов, что позволит вам теперь сделать тома доступными.
  4. Запустите команду, vgchange -a yчтобы сделать тома активными.
  5. Создайте папку для точки монтирования где-нибудь, например: sudo mkdir /media/<yourUserName>/someDir
  6. Установите его: sudo mount /dev/oldhd/root /mnt/oldhd.
  7. После работы с файлами вы должны переименовать свою группу томов обратно, ubuntu-vgесли вы хотите, чтобы том все еще был загрузочным.

2

Для тех из нас, кто не хочет использовать инструмент с графическим интерфейсом даже для определения, какой раздел зашифрован.

  • найти любые зашифрованные разделы

    lsblk -lf | grep LUKS
    

    -lзапрашивает формат "список" - нам не нужно, дерево
    -fпоказывает нам имя файловой системы,
    мы получаем что-то вроде

    sdc2 crypto_LUKS b09d6209-......

  • разблокировать раздел который мы хотим (в моем случае /dev/sdc2)

    udisksctl unlock -b /dev/sdc2
    

    -bозначает, что мы даем путь к блочному устройству,
    после ввода ключевой фразы мы получаем утвердительный ответ с необходимой информацией для следующего шага:

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

  • смонтировать вновь созданное устройство ( dmподставка для диспетчера устройств )

    udisksctl mount -b /dev/dm-6
    

    Мы снова получаем положительный ответ с полезной информацией:

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

    ( gбудучи моим именем пользователя в этой системе, Dataэто метка, которую я использовал для этого раздела)

    Это может быть случай, когда ваша настольная система / файловый менеджер уже автоматически смонтировала устройство, или вы сделали это раньше. Тогда вы получите что-то вроде

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

    Это не проблема, вы можете получить доступ к данным из зашифрованного раздела в любом случае.

  • получить доступ к данным: ls /media/g/Data
  • снова размонтируйте устройство (используйте то же имя, которое вы использовали для монтирования, команда unmount, а не umount :-))

    udisksctl unmount -b /dev/dm-6
    

    Если устройство не занято, вы получите

    Unmounted /dev/dm-6.

  • Теперь снова заблокируйте раздел (вы должны запомнить имя раздела)

    udisksctl lock -b /dev/sdc2
    

    Ты получишь

    Locked /dev/sdc2.

  • опционально выключить весь внешний диск

    udisksctl power-off -b /dev/sdc
    

    С графическим рабочим столом вы можете получить ошибку здесь:

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

    В этом случае вы можете использовать udisksctlдля размонтирования разделов один за другим, пока не добьетесь успеха. udisksctl power-offНе возвращает никаких сообщений.


2

Я пошел по нескольким путям из предыдущих ответов, и у меня работала только комбинация предыдущих ответов. Он, что я сделал, и что пошло хорошо, и что пошло не так и мой обходной путь.

У меня есть зашифрованный жесткий диск LUKS, который мне нужно смонтировать с USB при загрузке в реальном времени для Ubuntu 15.10 . Для этого я начал со следующей команды:

udisksctl unlock -b /dev/sda3

где sda3 - зашифрованный раздел. Эта команда не работала со мной, и я не уверен почему, поэтому я использовал следующую команду:

sudo cryptsetup luksOpen /dev/sda1 my_encrypted_volume

это работало со мной, и мне не нужно было устанавливать его, как это было в live boot.

Теперь мне нужно смонтировать HD, и это было не так просто: я попробовал:

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

Но вторая команда не работала со мной, и поэтому я должен найти решение, которое заключается в следующем:

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

Это был мой путь ... но вы можете использовать путь, dev/mapper/ubuntuа затем двойную вкладку, чтобы увидеть остальные варианты. Это смонтировано на HDD как:

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

Затем я использовал следующую команду для его монтирования /media/my_deviceследующим образом:

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

который работал нормально.

В итоге

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/

1

Вы можете смонтировать его в два этапа, и у меня есть пример сценария.

Примечание: сервис udiskctl будет монтировать вещи в / media, он больше предназначен для настольных пользователей, монтирующих usb-флешки. Если вы хотите смонтировать устройство в другом месте, это не то решение, которое вы ищете.

Вот что я разработал. В этом примере мое зашифрованное устройство - это раздел, созданный с помощью lvm, но это не имеет значения. Это раздел в формате ext4. В зашифрованном виде он живет по адресу

/dev/myvg/opt1 

зашифрованный раздел «открывается» (расшифровывается) вот так

  STEP 1:  sudo cryptsetup luksOpen /dev/myvg/opt1 opt1_opened

(это где вы вводите фразу-пароль)

последний аргумент является временной ссылкой на дешифрованное блочное устройство. «Сопоставление» исчезает при перезагрузке, поэтому вы можете каждый раз выбирать другое имя, если хотите.

теперь он виден как устройство:

ls /dev/mapper
control  myvg-opt1  myvg-root  opt1_opened

Вы можете установить это устройство: теперь у нас есть устройство ext4. Для удобства добавьте строку в / etc / fstab

/dev/mapper/opt1_opened /opt1   ext4    noauto,users    0       0

и создайте точку монтирования (в моем случае:, sudo mkdir /opt1а затем настройте разрешения по своему желанию). Если вы использовали имя opt1_opened на шаге 1, то это второй шаг для монтирования:

STEP 2: mount /opt1   #the fstab line lets users mount, so no need for sudo

и это установлено.

Следовательно, скрипт bash:

#!/bin/bash
#needs to be run sudo
read -s -p "Enter LUKS password: " luks_password
printf $luks_password | cryptsetup luksOpen /dev/myvg/opt1 opt1_opened --key-file -
sudo -u tim mount /opt1

1

Правильный ответ gio mount -d /dev/dm-x(не судо).

В предыдущих ответах показано отключение с помощью способа монтирования Nautilus или Nemo, поскольку вам необходимо ввести кодовую фразу LUKS, даже если она ранее была кэширована в пользовательском наборе ключей из GUI. При использовании gioавтоматически используется фраза-пароль, ранее сохраненная Nautilus или Nemo.

Более подробный ответ см. На странице https://unix.stackexchange.com/questions/394320/what-command-does-nemo-use-to-mount-drives/536842#536842.


0

Искал то же самое ...

Эти mkdirшаги были моей причиной, чтобы посмотреть дальше, также я изменил так, policykitчтобы мой пользователь мог монтировать, не спрашивая сначала пароль root, а затем пароль зашифрованного тома, так что sudoон также был уничтожен.

Мое решение, которое я нашел, было использование gvfs-mountиз gvfs-binпакета. Теперь, когда gvfs-mount -d /dev/sda7у меня спрашивают только зашифрованный пароль, он монтируется под /media/VOLUME_LABEL.


Не повезло с этим. Шаги, которые я предпринял: во-первых, cat /proc/partitionsчтобы определить метку / dev для диска. Во- вторых, gvfs-mount -d /dev/sdf1. Это выдает ошибку «Нет тома для файла устройства / dev / sdf1». Это выглядит близко, хотя!
Ча

Меня устраивает. Странно не через /dev/disks/by-labelили /by-uuid, но только мимо/dev/sdxx
Redsandro

Сообщение «Нет тома для файла устройства / dev / sdf1» будет отображаться до тех пор, пока вы не удалите соответствующее устройство из / etc / fstab. После этого gvfs-mount работает как было задумано
dbzix

К вашему сведению: gvfs-mount -d /dev/sdaXу меня отлично работает в Linux Mint 17.3 - пароль не требуется, как с графическим интерфейсом.
Джонатан Кросс

0

На моем Chromebook с (крутон) Ubuntu Xenial 16.04 я нахожу, что когда я выпускаю:

sudo cryptsetup luksOpen / dev / sda1 my_encrypted_volume

В соответствии с приведенным выше сообщением и введением моей парольной фразы, я получаю «Нет ключа с этой парольной фразой». Однако случайно я обнаружил (и это очень странно!) Все работает, когда я добавляю «--debug» в команду cryptsetup! Затем я могу смонтировать том и получить доступ к файлам.

Запрашивает файловый менеджер Thunar для выполнения монтирования результатов «Не авторизован для выполнения операции». ошибка. Я не могу найти способ обойти это, но так как я могу сделать монтирование в командной строке, это несколько приемлемо.


0

Итак, у меня есть работающее решение, ребята, как обсуждалось ранее, причина, по которой вы получаете mount: unknown filesystem type 'LVM2_member'ошибку, заключается в том, что по умолчанию ваша машина linux назначает одно и то же имя VG внешнему жесткому диску, следовательно, все разделы на внешнем жестком диске неактивны.

Это то, что вам нужно сделать:

  1. отключите внешний жесткий диск и запишите свой внутренний VG UUID с помощью ( sudo vgdisplay command),
  2. Теперь подключите внешний жесткий диск и переименуйте группу VG вашего ВНЕШНЕГО HDD (не внутреннего, это сломает ваш ящик) ( vgrename UUID_Number [new-group]).
  3. Убедитесь, что новое имя обновлено в VGdiplay, теперь активируйте новую VGroup ( vgchange [new_group] -a y), убедитесь, что все разделы активированы ( lvscan).
  4. Теперь вы должны увидеть все ваши разделы ls /dev/mapper/[new_group], все, что вам нужно сделать, это смонтировать раздел ( mount -t ext4 /dev/mapper/[new_group]-data /zez)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.