고쳐 쓰다:

고쳐 쓰다:

Mint Linux 설치를 파괴했습니다. 원격 매장에만 액세스하고 싶습니다. 그래서 일어난 일은 내 홈 디렉토리의 ICEauthority 파일에 문제가 있다는 것입니다. 그래서 인터넷의 다양한 지침에 따라 홈 디렉터리를 재귀적으로 chmod 755로 실행하여 파일이 작동하도록 할 수 있다는 결론에 도달했습니다. 결국 시스템 로딩 문제가 발생했습니다. 결국 홈 디렉터리를 루트로 실행 가능하도록 설정하여 읽기/쓰기 액세스 권한을 얻을 수 있었습니다. 그런데 컴퓨터를 재설정했습니다. 아, 왜 아, 컴퓨터를 재설정한 걸까요! - 이제 시스템에서 ICEauthority와 동일한 오류가 발생하지만 디스크가 암호화되어 있기 때문에 OS에 들어갈 수 없습니다. 내가 시도한 어떤 것도 작동하지 않는 것 같고 원래 설치 시드도 없습니다. 나는 또한 sudo ecryptfs-recover-private를 시도했지만 내 시스템에서는 그러한 파일이나 디렉터리가 없다고 말합니다.

frankenmint@honeybadger /home $ sudo ecryptfs-recover-private
INFO: Searching for encrypted private directories (this might take a while)...
INFO: Found [/home/.ecryptfs/frankenmint/.Private].
Try to recover this directory? [Y/n]: y
INFO: Found your wrapped-passphrase
Do you know your LOGIN passphrase? [Y/n] y
INFO: Enter your LOGIN passphrase...
Passphrase: 
Inserted auth tok with sig [979c6cdf80d2e44d] into the user session keyring
mount: No such file or directory
ERROR: Failed to mount private data at [/tmp/ecryptfs.Hy3BV96c].

가상 머신에 중요한 파일이 저장되어 있어서 정말 걱정됩니다... 해당 파일에 액세스할 수 있다면 설정을 해제하고 다시 시작하는 데 문제가 없을 것입니다.

답변1

sudo bash먼저 실행 한 다음 ecryptfs-recover-privatesudo를 통하지 않고 루트로 실행하는 것이 효과가 있다는 것을 알았습니다 . 왜 달라야하는지 잘 모르겠습니다.

편집하다:

간단히 말해서:

# ecryptfs-unwrap-passphrase /mnt/crypt/.ecryptfs/user/.ecryptfs/wrapped-passphrase - | ecryptfs-add-passphrase --fnek -
    < Type your login password here >
Inserted auth tok with sig [aaaaaaaaaaaaaaaa] into the user session keyring
Inserted auth tok with sig [bbbbbbbbbbbbbbbb] into the user session keyring

프롬프트가 표시되지 않으며 위 명령에 로그인 비밀번호를 맹목적으로 입력해야 합니다.

aaaaaaaaaaaaaaaa아래 합계를 bbbbbbbbbbbbbbbb위 출력의 대괄호 사이에 있는 16진수 서명으로 순서대로 바꿉니다.

# mount -i -t ecryptfs -o ecryptfs_sig=aaaaaaaaaaaaaaaa,ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb,ecryptfs_cipher=aes,ecryptfs_key_bytes=16 /mnt/crypt/.ecryptfs/user/.Private /mnt/plain

예선

루트로 실행하는 것만으로는 안정적으로 작동하지 않을 때도 있고 그렇지 않을 때도 있습니다. 기본적으로 ecryptfs는 버그가 많고 사용자 친화적이지 않으며 종종 로그인 및 마운트 비밀번호를 혼동하는 것처럼 보입니다. 깊고 어두운 토끼 굴을 내려간 후에 도움이 될 몇 가지 팁이 있습니다. 이 지침은 Ubuntu 17.10, ecryptfs-utils 111-0에 대한 것입니다. 시작하기 전에 루트여야 합니다. 나는 당신이 /mnt/crypt(이미 설치되어 있어야 하는) 홈 디렉토리를 에서 마운트하기를 원한다고 가정하고 이를 사용자 이름으로 /mnt/plain바꿔야 합니다 .user

쉽게 시작하세요

가장 먼저 시도해 볼 사항은 다음과 같습니다.

# ecryptfs-recover-private /mnt/crypt/.ecryptfs/user/.Private

이것이 효과가 있다면 운이 좋은 것입니다. 그렇지 않은 경우 mount약 에서 오류 메시지가 나타날 수 있습니다 no such file or directory. 이는 매우 오해의 소지가 있습니다. 실제로 의미하는 바는 설치 비밀번호가 잘못되었거나 누락되었다는 것입니다.

서명 받기

이것이 중요한 부분입니다. ecryptfs가 실제로 올바른 마운트 비밀번호를 시도했는지 확인해야 합니다. ecryptfs가 파일 시스템을 마운트하려면 먼저 암호를 Linux 커널에 로드해야 합니다. ecryptfs는 서명을 통해 커널에서 이를 요청합니다. 서명은 16바이트 16진수 값이며 암호화에 민감하지 않습니다. ecryptfs에서 예상하는 암호화 서명을 찾을 수 있습니다.

# cat /mnt/crypt/.ecryptfs/user/.ecryptfs/Private.sig
aaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbb

이것을 기억하세요.목표는 이러한 서명이 포함된 암호를 커널에 로드한 다음 ecryptfs에 이를 사용하도록 지시하는 것입니다. 첫 번째 서명( aaaaaaaaaaaaaaaa)은 데이터용이고 두 번째 서명( bbbbbbbbbbbbbbbb)은 파일 이름 암호화 키(FNEK)입니다.

마운트 비밀번호 받기

이 명령은 당신에게 묻습니다.로그인비밀번호(오해의 소지가 있는 프롬프트 포함)를 입력하고 출력비밀번호:

# ecryptfs-unwrap-passphrase /mnt/crypt/.ecryptfs/user/.ecryptfs/wrapped-passphrase

이것을 복사하지만조심하세요! !, 이는 암호학적으로 매우 민감하고 왕국의 열쇠이기 때문입니다.

대화형 설치를 시도해보세요

다음으로 시도해 볼 사항은 다음과 같습니다.

# mount -t ecryptfs /mnt/crypt/.ecryptfs/user/.Private /mnt/plain

여기서 가장 중요한 것은 mount당신이 필요한 것입니다 (매우 민감함)설치 비밀번호방금 복사한 것입니다(로그인 비밀번호 아님).

그러면 몇 가지 질문이 표시되며 기본값을 그대로 적용할 수 있습니다.와는 별개로이라고 합니다 Enable filename encryption. 경고하고 캐시된 서명을 요청할 수 있습니다. 두 가지 모두에 동의할 수 있지만 설치 비밀번호가 올바른지 다시 확인하세요.

mount시도해 보도록 결정된 옵션이 표시됩니다.

Attempting to mount with the following options:
  ecryptfs_unlink_sigs
  ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb
  ecryptfs_key_bytes=16
  ecryptfs_cipher=aes
  ecryptfs_sig=aaaaaaaaaaaaaaaa
Mounted eCryptfs

서명이 잘못된 경우(에서 받은 서명과 일치하지 않음 Private.sig) 설치가 작동하지 않습니다.

...하지만 그렇다고 보고하는 것은 도움이 되지 않습니다. ls /mnt/plain확실히 알기 위해서는 파일을 정리하고 정리 해야 합니다 . 이 시점에서 /var/log/syslogecryptfs가 우리와 동일한 서명을 찾고 있는지 확인하고 확인할 수도 있습니다 .

ecryptfs에는 분명히 두 가지 심각한 문제가 있으며 이를 해결해야 합니다.

커널에 키 로드

대화형 마운트가 도움이 되지 않으면 키를 커널에 직접 로드하고 마운트 옵션에서 수동으로 지정해야 합니다.

# ecryptfs-add-passphrase --fnek

그리고 당신의 것을 붙여넣으세요(매우 민감함)설치 비밀번호위에서 복사되었습니다. 다음과 같이 출력되어야 합니다.

Inserted auth tok with sig [aaaaaaaaaaaaaaaa] into the user session keyring
Inserted auth tok with sig [bbbbbbbbbbbbbbbb] into the user session keyring

수동 설치

이제 암호문이 커널에 로드되었으므로 mount에 이를 사용하도록 지시하면 됩니다.

# umount /mnt/plain
# mount -i -t ecryptfs -o ecryptfs_sig=aaaaaaaaaaaaaaaa,ecryptfs_fnek_sig=bbbbbbbbbbbbbbbb,ecryptfs_cipher=aes,ecryptfs_key_bytes=16 /mnt/crypt/.ecryptfs/user/.Private /mnt/plain

ecryptfs에 무슨 일이 일어나고 있는지 수동으로 알려주는 점을 제외하면 옵션이 대화형 마운트에서 인쇄된 옵션과 유사하다는 것을 알 수 있습니다.

이것이 효과가 있기를 바랍니다. 그렇지 않은 경우 를 사용하여 키가 올바른 서명으로 커널에 로드되었는지 확인할 수 있습니다 keyctl list @u. 그러면 예상한 최소한 두 개의 서명이 인쇄됩니다.

답변2

이 Q&A를 보시는 시청자 여러분께: 동일한 표면적 증상이 다른 근본 원인으로 인해 발생할 수 있습니다. 증상은 다음과 같습니다.

INFO: Found [/home/.ecryptfs/frankenmint/.Private].
Try to recover this directory? [Y/n]: y
INFO: Found your wrapped-passphrase
Do you know your LOGIN passphrase? [Y/n] y
INFO: Enter your LOGIN passphrase...
Passphrase: 
Inserted auth tok with sig [979c6cdf80d2e44d] into the user session keyring
mount: No such file or directory
ERROR: Failed to mount private data at [/tmp/ecryptfs.Hy3BV96c].

나는이 답변문제 해결의 열쇠를 마스터했습니다. 문제는 Tmux 세션에서 SSH를 통해 원격으로 모든 작업을 수행하려고 하는데 이로 인해 사용자 세션 키링이 엉망이 된다는 것입니다.

위의 답변은 한 줄에 주석을 달고 /etc/pam.d/sshd새 세션에서 다시 시도해 보라고 제안했지만 저에게는 효과가 없었습니다. 작동하는 간단한 해결 방법은 현장에서 수행하고 SSH 및 Tmux를 완전히 피하는 것입니다.

고쳐 쓰다:

깊은 영감을 받은이 답변, 다음을 사용하여 Tmux 세션에서 SSH를 통해 연결하는 동안 이전 암호화된 홈 디렉터리를 마운트할 수 있었습니다.

이전 루트 파티션( /home/이전 위치)이 마운트되었다고 가정하면 /mnt/oldroot/이전 사용자 이름은 다음과 같습니다 olduser.

mkdir -p ~/.ecryptfs
echo "/mnt/oldroot/home/.ecryptfs/olduser/.Private /mnt/oldroot/home/olduser ecryptfs" > ~/.ecryptfs/oldhome.conf
cp -a /mnt/oldroot/home/.ecryptfs/olduser/.ecryptfs/Private.sig ~/.ecryptfs/oldhome.sig

# This will prompt for the old login password:
ecryptfs-insert-wrapped-passphrase-into-keyring /mnt/oldroot/home/.ecryptfs/olduser/.ecryptfs/wrapped-passphrase

# This will mount the old decrypted home contents over /mnt/oldroot/home/olduser:
mount.ecryptfs_private oldhome

관련 정보