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.)

cha
fonte
+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.
David Planella
fonte
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
Georg Schölly
fonte
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
taitelman
fonte
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.

amenthes
fonte
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
D.Snap
fonte
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.
knocte
fonte
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.

Guntbert
fonte
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/
aibrahim
fonte
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
Tim Richardson
fonte
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

Redsandro
fonte
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.

Aditya
fonte
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.

yawlhoo
fonte
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)
Zareena Shinwari
fonte