Montar volumes criptografados a partir da linha de comando?


86

Se eu tiver um disco externo criptografado (ou um disco interno que não esteja no fstab), vejo uma entrada no Nautilus - com uma entrada como "X GB Encrypted Volume". Posso clicar neste volume e é solicitada uma senha para descriptografar e montar o dispositivo.

Mas como faço isso na linha de comando?

Esta página da wiki e outros documentos que posso encontrar referem-se apenas aos métodos da GUI para descriptografar o dispositivo; mas isso não funciona no contexto de servidores sem cabeça ou logins SSH. Existe uma maneira simples de fazer com que os dispositivos sejam montados em locais automáticos /mediaexatamente como faria com a GUI?

(Não estou perguntando sobre diretórios pessoais criptografados - estou ciente ecryptfs-mount-private. Esta pergunta é sobre volumes criptografados adicionais.)


+1 para estabelecer a distinção entre a criptografia dos sistemas de arquivos como um todo e os diretórios
pessoais

Continuou. A distinção se tornou atual agora que o Ubuntu 18.04 rebaixou o suporte à criptografia de diretório único em favor da criptografia de disco completo, de acordo com askubuntu.com/q/1030572/446253 Para alguns, inclusive eu, essa é uma fonte de dificuldades na migração para o 18.04 perfeitamente
XavierStuvw

Respostas:


62

Os passos na resposta de @Georg Schölly não funcionaram para mim na época, embora possam funcionar agora, alguns lançamentos do Ubuntu depois. Naquela época, após a sudo mount /dev/mapper/my_encrypted_volume /media/my_deviceetapa, recebi o erro:

mount: tipo de sistema de arquivos desconhecido 'LVM2_member'

Desbloqueando e montando o disco com udiskctl

Em vez disso, usei udisksctluma interface de linha de comando que interage com o udisksdserviço.

Aqui está o que funcionou ( /dev/sdb5a partição do meu disco rígido está marcada como crypt-luks):

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

Depois de digitar o primeiro comando, você será solicitado a digitar a senha de criptografia. Depois que a partição criptografada for desbloqueada, o segundo comando a montará. Se for bem-sucedido, você receberá uma mensagem semelhante a esta:

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

De lá eu pude acessar os dados :)

Bloqueando o disco com o udiskctl

Desmonte o dispositivo:

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

Você precisará desativar todos os volumes lógicos no ubuntu-vggrupo de volumes primeiro. Caso contrário, você receberá um erro como "Dispositivo ocupado" se tentar bloqueá-lo ( mais informações ):

sudo lvchange -an ubuntu-vg

Então você poderá bloquear a partição criptografada

udisksctl lock -b /dev/sdb5

Notas

  • Os udisksctlcomandos são executados sem sudo .
  • Nomes mapeador de dispositivos : a ubuntu--vg-rootnomeação pode mudar entre os releases do Ubuntu (por exemplo, eu já vi isso chamado system-roote ubuntu-roottambém). Uma maneira fácil de descobrir o nome é executar o seguinte comando após desbloquear a partição LUKS :

    ls -la /dev/mapper

    Então, olhando para a saída do lscomando, o nome que você precisará será geralmente o que está associado a/dev/dm-1

  • Nomes do mapeador de dispositivos, alternativa : uma alternativa ao comando anterior é executar:

    lsblk -e7

    Lá, você poderá ver o mapeamento do nome do dispositivo como uma exibição em árvore. A -e 7opção é usada para excluir os dispositivos de loop (ID 7) criados pelos snaps instalados da saída. Simplesmente para ter menos desordem.

  • Nomes de volumes lógicos : você pode executar o sudo lvscomando para descobrir os nomes dos grupos de volumes e volumes lógicos
  • Aplicativo de discos : o aplicativo de discos do GNOME não desativa automaticamente os volumes lógicos antes de bloquear a partição. Mesmo se você tiver desbloqueado a partição com sucesso pela GUI, precisará ir para a linha de comando e executar o sudo lvchange -an ubuntu-vgcomando antes de poder bloqueá-la na GUI.

1
Acho que essa é a melhor resposta, porque suspeito que seja mais ou menos o que o nautilus faz usando libudisks2. Além disso, testei isso para funcionar bem como um usuário não privilegiado.
precisa saber é o seguinte

9
Infelizmente, recebo o erro Object /org/freedesktop/UDisks2/block_devices/dm_2d3 is not a mountable filesystem.algum conselho?
wawa

1
@wawa Eu tive o mesmo problema e resolveu-o nesta resposta askubuntu.com/a/895508/334823
raphael

2
Avançando rapidamente 5 anos, eu tive que resgatar uma partição criptografada novamente. Usei um stick USB Ubuntu 18.04 ao vivo e segui os mesmos passos que descrevi na época. Como antes, eles funcionaram bem e eu não precisei sudoexecutá-los.
David Planella

1
@Selah, estendi a resposta para explicar melhor qual caminho do dispositivo usar para a montagem. Para mwfearnley: pode valer a pena examinar as permissões do usuário em que você fez login.
David Planella

87

Seu volume provavelmente está criptografado com LUKS, veja como montá-lo:

Você precisa:

sudo apt-get install cryptsetup

Para descriptografar o volume:

sudo cryptsetup luksOpen /dev/sda1 my_encrypted_volume

Agora você pode montá-lo como de costume:

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

Para bloquear o contêiner novamente, ele precisa ser desmontado primeiro:

sudo umount /media/my_device
sudo cryptsetup luksClose my_encrypted_volume

Para colocá-lo automaticamente no /medialocal, use a ferramenta udisks

sudo udisks --mount /dev/mapper/my_encrypted_volume

Portanto, também não posso fazer isso como um usuário não privilegiado, mesmo que pudesse através da GUI?
cha

Isso realmente depende da configuração do seu sistema. Acredito que a maioria dos comandos funcione desde que seu sistema conceda ao usuário acesso aos dispositivos.
Georg Schölly 30/09/11

1
O Ubuntu 15.04 envia o udisks2pacote no lugar de udisks, e o primeiro renomeia a ferramenta udisksctl.
Skierpage

infelizmente não funcionou para mim com o ubuntu 16.04. mount: tipo de sistema de arquivos desconhecido 'LVM2_member'
Selah

@Selah: Parece que você está tentando descriptografar algo que não é um volume da LUKS. Talvez você precise usar outra coisa que não /dev/sda1.
Georg Schölly 27/09/17

22

Se você receber este erro:

mount: unknown filesystem type 'LVM2_member'

corre:

sudo apt-get install lvm2
sudo lvscan

em seguida, ative todos os LVM que você vê

sudo vgchange -ay

depois execute novamente o suporte:

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

7
A última linha não está necessariamente correta, pois você ainda pode acabar com o mesmo erro. Em vez disso, monte uma das unidades listadas com o lvscan em vez de/dev/mapper/my_encrypted_volume
Weasemunk 28/08

Isto não funcionou para mim. Mesma montagem de erro: tipo de sistema de arquivos desconhecido 'LVM2_member'. Talvez porque eu esteja inicializando a partir de uma unidade flash?
Selah

@SeanScott muito obrigado ... Eu usei o instalador para criptografar meu disco agora eu estou tentando recuperar os dados e tem que recém aprender essas coisas ... d'oh
CameronNemo

13

Um problema que encontrei foram grupos de volumes duplicados : tanto o meu sistema de recuperação quanto a unidade a ser recuperada eram sistemas ubuntu com LVM. É por isso que eu tinha dois ubuntu-vggrupos de volumes ( vgdisplayexibiria ambos, cada um com seu próprio UUID, mas não consegui acessar seus volumes lógicos).

Minha solução baseia-se na resposta de Georg:

  • Inicialize um live-linux (para não encontrar o nome do grupo de volumes duplicado)
  • sudo cryptsetup luksOpen /dev/sdaX my_encrypted_volume
  • digite sua senha quando solicitado
  • sudo vgscan agora deve pegar os volumes / grupos contidos.

  • DRAGÕES À FRENTE: AGORA MUDAMOS O NOME DO GRUPO VOLUME. Você não será capaz de inicializar depois!

    use sudo vgrename ubuntu-vg ubuntu-vg2para renomear o grupo de volumes.

    Se você precisar inicializar a unidade, execute estas etapas novamente, mas renomeie seu grupo de volumes de volta para ubuntu-vg. Uma possibilidade diferente é alterar sua configuração de inicialização para o novo nome-vg.

Agora que a duplicata vg-nome é resolvido, eu posso arrancar de volta para o meu sistema regular, refazer a cryptsetup..., vgscane, em seguida, montar /dev/mapper/ubuntu--vg2-rootem qualquer lugar você gosta.


2
Parece que você também pode fazer sudo vgdispaypara encontrar o UUID e usá-lo em vez do nome duplicado para fazer a renomeação de apenas um volume. Ou seja, pegar o UUID e depois sudo vgrename <uuid> oldtrabalhar para mim.
mpontillo

Não posso testar a sugestão de Mike no momento, mas se funcionar, é melhor do que renomear o grupo de volumes!
amenthes

5

sdb1 aqui está um exemplo em que você deve inserir o nome do dispositivo, nenhum desses comandos exigirá privilégios de root

desbloquear disco criptografado

udisksctl unlock -b /dev/sdb1

depois de inserir a senha correta, será exibida algo como isto: Desbloqueado / dev / sdb1 como / dev / dm-3

depois monte-o em / media /

udisksctl mount -b /dev/dm-3

deve gerar algo como isto: Montado / dev / dm-3 em / media / yourUserName / sdb

desmontar

udisksctl unmount -b /dev/dm-3

trancá-lo novamente

udisksctl lock -b /dev/sdb1

2
O disksctl mount -b / dev / dm-4 O objeto / org / freedesktop / UDisks2 / block_devices / dm_2d4 não é um sistema de arquivos montável.
23916 DevilCode

Desculpe, você resolveu esse problema? (com FS não montáveis ... como eu estou recebendo o mesmo)
Oleg Tarasenko

1
Mesmo problema, consulte esta resposta para algo que funcionou para mim askubuntu.com/a/895508/334823
raphael

3

Todas as respostas acima assumiram que o usuário já sabe qual partição é a criptografada. Vindo de alguém que não gosta muito da linha de comando, eu esperava uma resposta amigável ... Então, meus 2 centavos aqui.

  1. Abra o aplicativo "disks" do ubuntu.
  2. Localize o disco rígido montado no painel esquerdo.
  3. Clique na partição que possui "LUKS" em seu nome: desta forma, você pode ver seu ponto de montagem no texto "Dispositivo" abaixo (no meu caso /dev/sdb4:).

Então eu tentei montá-lo como recomendado acima:

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

Mas recebi este erro:

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

Ok, acho que o nautilus já tentou montá-lo (porque na verdade solicitou a senha ao conectar o USB, mesmo que ele não acabasse mostrando a árvore descriptografada). No entanto, a mensagem de erro não é realmente útil porque não me diz onde já foi mapeada / montada. Mas este comando ajuda neste caso:

$ 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! Então é isso /dev/dm-3.

No entanto, ao tentar montá-lo, ele não funciona:

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

Depois de muitos ajustes, descobri que estava com o duplicate volume groupsproblema (descrito acima por @amenthes) porque os comandos sudo vgscan -ve sudo vgdisplaymostravam duas entradas com o mesmo nome de grupo de volumes. No entanto, encontrei uma maneira melhor de lidar com isso do que seu método (não é necessário inicializar um LiveCD para renomear grupos de volumes!), Neste link , que cito acima (apenas no caso de o link ser quebrado ...) :

Se você executar, ls -la /dev/mapper/deverá ver um luks-xxxxxx-xxxxx-xxxxou mais desses arquivos. Esse é o mapeamento criado quando o Ubuntu solicitou a senha de criptografia com uma caixa de diálogo, mas não conseguiu abri-la (tudo o que a caixa de diálogo fez foi chamar luksOpene mapeá-lo para o arquivo / dev / mapper / luks-xxx). Agora:

  1. Verifique se o seu volume físico está disponível executando o sudo pvdisplaycomando Deve ser / dev / mapper / luks-xxx-qualquer que seja.
  2. Obtenha o uuid do volume executando sudo pvs -o +vg_uuid. O uuid será o valor exibido totalmente à direita, contendo 7 valores delimitados por traços. Copie-os em algum lugar, pois os usaremos na próxima etapa. NÃO confunda UUIDS e copie o errado. Copie apenas o do seu atual / dev / mapper / luks-xxx-qualquer dispositivo.
  3. Altere o grupo de volumes do seu disco antigo executando o seguinte comando sudo vgrename UUIDOFYOURDISKHERE oldhdVocê pode alterar o "oldhd" para o que desejar, desde que seja diferente do nome do grupo de volumes do disco atual. A execução desta etapa remove o conflito com os nomes dos grupos de volumes, o que permitirá que você disponibilize agora os volumes.
  4. Execute o comando vgchange -a ypara ativar os volumes.
  5. Crie uma pasta para um ponto de montagem em algum lugar, por exemplo: sudo mkdir /media/<yourUserName>/someDir
  6. Montá-lo: sudo mount /dev/oldhd/root /mnt/oldhd.
  7. Depois de trabalhar com seus arquivos, você deve renomear seu grupo de volumes novamente para ubuntu-vgse desejar que o volume ainda seja inicializável.

2

Para aqueles de nós que não desejam usar uma ferramenta GUI, mesmo para determinar qual partição está criptografada.

  • encontre partições criptografadas

    lsblk -lf | grep LUKS
    

    -lsolicita o formato "list" - não precisamos que a árvore
    -fnos mostre o nome do sistema de arquivos também
    , obtemos algo como

    sdc2 crypto_LUKS b09d6209-......

  • desbloquear a partição que queremos (no meu caso /dev/sdc2)

    udisksctl unlock -b /dev/sdc2
    

    -bsignifica que estamos dando o caminho para um dispositivo de bloco
    depois de digitar a senha, obtemos uma resposta afirmativa com as informações necessárias para a próxima etapa:

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

  • montar o dispositivo recém-criado ( dmsignifica gerenciador de dispositivos )

    udisksctl mount -b /dev/dm-6
    

    Novamente, obtemos uma resposta afirmativa com informações úteis:

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

    ( gsendo meu nome de usuário neste sistema, Dataé o rótulo que usei para essa partição)

    Pode ser que o seu sistema de desktop / gerenciador de arquivos já tenha montado o dispositivo automaticamente ou você já fez isso antes. Então você obtém algo como

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

    Isso não é problema, você pode acessar os dados da partição criptografada de qualquer maneira.

  • acesse os dados: ls /media/g/Data
  • desmonte o dispositivo novamente (use o mesmo nome que você usou para montar, o comando é unmount, não umount :-))

    udisksctl unmount -b /dev/dm-6
    

    Se o dispositivo não estiver ocupado, você receberá

    Unmounted /dev/dm-6.

  • Agora bloqueie a partição novamente (é necessário lembrar o nome da partição)

    udisksctl lock -b /dev/sdc2
    

    Você vai ter

    Locked /dev/sdc2.

  • opcionalmente, desligue o disco externo completo

    udisksctl power-off -b /dev/sdc
    

    Com uma área de trabalho gráfica, você pode receber um erro aqui:

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

    Nesse caso, você pode udisksctldesmontar as partições uma a uma até obter êxito. O udisksctl power-offnão retorna nenhuma mensagem.


2

Eu segui vários caminhos a partir das respostas anteriores e apenas a combinação das respostas anteriores funcionou para mim. Ele o que eu fiz e o que deu certo, o que deu errado e minha solução alternativa.

Eu tenho um disco rígido criptografado LUKS que preciso montar a partir de um USB de inicialização ao vivo para o Ubuntu 15.10 . Para fazer isso, comecei com o seguinte comando,

udisksctl unlock -b /dev/sda3

onde sda3 é a partição criptografada. Este comando não funcionou comigo e não sei por que, então usei o seguinte comando:

sudo cryptsetup luksOpen /dev/sda1 my_encrypted_volume

funcionou comigo e eu não precisava instalá-lo, pois estava lá na inicialização ao vivo.

Agora, preciso montar o HD, e isso não foi algo direto: tentei:

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

Mas o segundo comando não funcionou comigo e, portanto, tenho que encontrar um trabalho em torno do qual seja o seguinte:

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

Esse foi o meu caminho .. mas você pode usar o caminho dev/mapper/ubuntue depois clicar duas vezes para ver o restante das opções. Isso montou o disco rígido como:

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

Em seguida, usei o seguinte comando para montá-lo da /media/my_deviceseguinte maneira:

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

que funcionou bem.

Em suma

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

Você pode montá-lo em duas etapas, e eu tenho um exemplo de script.

Nota: o serviço udiskctl monta coisas sob / media, é mais projetado para usuários de desktop montando pen drives. Se você deseja montar o dispositivo em outro lugar, não é a solução que você está procurando.

Aqui está o que eu resolvi. Neste exemplo, meu dispositivo criptografado é uma partição feita com lvm, mas isso realmente não importa. É uma partição ext4 formatada. Em sua forma criptografada, ele vive em

/dev/myvg/opt1 

uma partição criptografada é "aberta" (descriptografada) como esta

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

(é aqui que você digita a senha)

o último argumento é uma referência temporária ao dispositivo de bloco descriptografado. O 'mapeamento' desaparece quando você reinicia, para poder escolher um nome diferente a cada vez, se desejar.

agora está visível como um dispositivo:

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

Você pode montar este dispositivo: agora temos um dispositivo ext4. Para torná-lo conveniente, adicione uma linha em / etc / fstab

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

e defina o ponto de montagem (no meu caso sudo mkdir /opt1:, e, em seguida, configure as permissões conforme desejado) Se você usou o nome opt1_opened na Etapa 1, então este é o segundo passo para montá-lo:

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

e está montado.

Portanto, um script 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

A resposta correta é gio mount -d /dev/dm-x(sem sudo).

As respostas anteriores mostram uma desconexão com o modo de montagem do Nautilus ou Nemo, pois é necessário inserir a senha LUKS, mesmo que ela tenha sido armazenada anteriormente em cache no porta-chaves do usuário a partir da GUI. O uso giousa automaticamente a frase secreta armazenada anteriormente pelo Nautilus ou Nemo.

Para obter uma resposta mais detalhada, consulte https://unix.stackexchange.com/questions/394320/what-command-does-nemo-use-to-mount-drives/536842#536842


0

Estava procurando o mesmo ...

As mkdiretapas foram o meu motivo para procurar mais, também modifiquei policykitpara permitir que meu usuário monte sem solicitar primeiro a senha do root e, em seguida, a senha do volume criptografado, de modo que o processo sudotambém acabou.

Minha solução que eu encontrei foi o uso de gvfs-mountdo gvfs-binpacote. Agora, com um gvfs-mount -d /dev/sda7pedido, solicitei apenas a senha criptografada e está montada em /media/VOLUME_LABEL.


Não estou tendo sorte com isso. Etapas que eu segui: primeiro, cat /proc/partitionspara identificar o rótulo / dev para a unidade. Segundo gvfs-mount -d /dev/sdf1. Isso fornece o erro "Sem volume para o arquivo de dispositivo / dev / sdf1". Isso parece próximo, no entanto!
cha

Funciona para mim. Estranhamente não através /dev/disks/by-labelou /by-uuid, mas apenas por/dev/sdxx
Redsandro

A mensagem "Nenhum volume para o arquivo de dispositivo / dev / sdf1" estará presente até você excluir o dispositivo correspondente de / etc / fstab. Depois disso gvfs-mount funciona como projetado
dbzix

FYI: gvfs-mount -d /dev/sdaXfuncionou perfeitamente para mim no Linux Mint 17.3 - Nenhuma senha é necessária como na GUI.
Jonathan Cross

0

No meu chromebook com (crouton) Ubuntu Xenial 16.04, acho que quando emito:

Abra o diretório / dev / sda1 my_encrypted_volume

de acordo com a postagem acima e insira minha senha, recebo "Nenhuma chave disponível com esta senha". No entanto, por acidente, descobri (e é muito estranho!) Tudo funciona quando adiciono "--debug" ao comando cryptsetup! Sou capaz de montar o volume e acessar os arquivos.

Solicitando ao gerenciador de arquivos Thunar que faça os resultados da montagem "Não autorizado a executar a operação". erro. Não consigo descobrir uma maneira de contornar isso, mas como posso montar na linha de comando, isso é aceitável.


0

Ok, então eu tenho uma solução de trabalho pessoal, conforme discutido anteriormente, a razão pela qual você está recebendo mount: unknown filesystem type 'LVM2_member'erro é porque, por padrão, sua máquina linux atribui o mesmo nome VG ao disco rígido externo, portanto, todas as partições no disco rígido externo estão inativas.

Isso é o que você precisa fazer:

  1. desconecte seu disco rígido externo e anote seu VG UUID interno usando ( sudo vgdisplay command),
  2. agora conecte seu disco rígido externo e renomeie o grupo VG do seu HDD EXTERNO (não interno, isso quebrará sua caixa) ( vgrename UUID_Number [new-group]).
  3. Verifique se o novo nome está atualizado no VGdiplay, agora ative o novo VGroup ( vgchange [new_group] -a y), verifique se todas as partições estão ativadas ( lvscan).
  4. Agora você deve ver todas as suas partições ls /dev/mapper/[new_group], tudo o que você precisa fazer é montar a partição ( mount -t ext4 /dev/mapper/[new_group]-data /zez)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.