Luks
cryptsetup open for luks : –key-file 參數處理不當
一個相關的問題是:luksOpen 不會使用 keyfile 解密,除非提供了 –key-file 參數
然而,在 Ubuntu 仿生上
cryptsetup 2.0.2
,我確實遇到了以下問題:當使用文件中包含的密碼打開 luks 加密設備時,它在直接呼叫中執行良好:
cat mypass.txt | sudo cryptsetup open --type luks /dev/sda1 enc-store
嘗試使用記錄在案的
--key-file=-
參數,這應該會導致相同的行為cat mypass.txt | sudo cryptsetup open --type luks --key-file=- /dev/sda1 enc-store
只是產生延遲的消息
此密碼沒有可用的密鑰。
當嘗試使用
cryptdisks_start enc-store
依賴於--key-file=-
選項的腳本時,這尤其是一個問題,該選項會三次生成上述消息這使生活變得不那麼愉快。
我在這裡錯過了什麼嗎?
-謝謝!
這兩個命令之間存在差異,如下所述
man cryptsetup
:–key-file, -d name
從文件中讀取密碼。
如果給定的名稱是“-”,則將從標準輸入讀取密碼。在這種情況下,讀取不會在換行符處停止。
這意味著如果您使用 、 或複制/粘貼來生成文件
echo
,vi
它很可能在末尾包含一個換行符。如果用作純標準輸入(無--key-file
選項),它將忽略其最後的換行符,但當用作 的參數時--key-file
,即使它是相同的標準輸入 (--key-file=-
),它也會將此換行符包含在密碼片語中:它變成一個新密碼片語是無效的。要驗證這一點:
cat mypass.txt | tr -d '\r\n' | sudo cryptsetup open --type luks --key-file=- /dev/sda1 enc-store
應該按預期工作(以防我也刪除任何 CR)。
如果這是原因,只需刪除此換行符:例如
mv -i mypass.txt mypass.old && tr -d '\r\n' < mypass.old > mypass.txt
無論如何,您可能應該做的是從純隨機數生成新密碼,將其放入安全文件中,並將其包含在單獨的 LUKS 插槽中。