makepasswd 在 Debian Stretch 中無法正常工作
我正在使用
makepasswd
在 VM 中生成一堆隨機密碼。升級到 Stretch/Debian 9 後,該腳本要麼生成一個或兩個密碼,然後停止,要麼根本不生成。
再次生成另一個密碼似乎需要相當長的時間。
第一次呼叫它:
makepasswd ndmBXpfp3
它按預期立即生成一個隨機字元串。
第二次:
makepasswd
它一直在那裡等待……等待。
另一種替代解決方案是安裝守護程序
haveged
以加快密鑰生成過程,而不是修改 makepasswd 源。要安裝它:sudo apt-get install haveged
安裝後,
makepasswd
它也可以正常工作。現在,在熵通常較低
haveged
的虛擬機和物聯網(例如樹莓)中需要該守護程序。來自 Debian
man haveged
,:NAME
haveged
- 生成隨機數並提供給 Linux 的隨機設備。描述
haveged
使用 HAVEGE(硬體易失熵收集和擴展)算法從硬體事件對隱藏處理器狀態(記憶體、分支預測器、記憶體轉換錶等)的間接影響中生成不可預測的隨機數流。該算法在使用者空間執行,文件系統訪問輸出流不需要特殊權限。Linux 匯集隨機性以通過
/dev/random
和/dev/urandom
設備介面進行分發。填充/dev/random
池的標準機制可能不足以滿足對具有高需求或有限使用者互動的系統的需求。在這些情況下,只要隨機位的供應低於設備的低水位線,haveged
就可以作為特權守護程序執行以填充池。/dev/random``/dev/random
似乎
makepasswd
從使用 openssl API 生成(偽)隨機數變為現在使用基於/dev/random
.問題是虛擬機和物聯網(可能)活動性低,並且沒有產生足夠的熵來滿足腳本/
makepasswd
飲用/dev/random
雖然我試圖找到一個選項讓它從 中獲取隨機數
/dev/urandom
,但它沒有。所以我剛剛得到了一個舊版本
makepasswd
,因為它是一個 perl 腳本,並將腳本指向/opt/bin/makepasswd
我的系統;並且腳本現在像往常一樣在幾秒鐘內生成我需要的 +100 密碼。從源碼可以看出:
新
makepasswd
:my $buf = $RNG->bytes($bytes);
舊
makepasswd
:my $buf = Crypt::OpenSSL::Random::random_pseudo_bytes($bytes);
有趣的是,版權附近的數據和版本並沒有改變,這讓我有一段時間偏離了軌道。
在他們兩個中:
$Program = 'makepasswd'; $Version = '1.10'; $Author = 'Rob Levin <levin@openproject.net>'; $Date = "Monday, 7 April 1999 at 22:56 (UCT)"; $Copyright = '1997-1999';
然而,從
changelog.Debian.gz
Convert from Crypt::OpenSSL::Random to Bytes::Random::Secure (closes: #792535). -- Colin Watson <cjwatson@debian.org> Thu, 16 Jul 2015 11:45:20 +0100