Rhel6

Anaconda kickstart 和 rootpw 選項

  • January 17, 2018

我已經嘗試了幾種在 SL 6.5 上生成加密密碼的不同方法,但似乎沒有什麼對我有用。我在各種 /var/log/anaconda* 文件中的任何地方都沒有發現任何錯誤,但我無法登錄,所以它顯然不起作用。

/root/anaconda-ks.cfg我用作模板的原始自動創建文件如下所示:

rootpw  --iscrypted $6$...(about 100 characters)
authconfig --enableshadow --passalgo=sha512

接下來我嘗試openssl passwd -1了它給了我:

rootpw  --iscrypted $1$...(about 30 characters)
authconfig --enableshadow --passalgo=sha512

我意識到這不是 SHA-512,所以我嘗試了一個在幾個地方重複的 Python 單線

rootpw  --iscrypted $6...(about 10 characters)
authconfig --enableshadow --passalgo=sha512

沒有任何作用;我無法登錄,最終不得不在單使用者模式下重置 root 密碼。

確保您的機器上有 shadow 和 passalgo=sha512,將 root 密碼設置為您想要在該機器上使用的任何密碼,然後從 /etc/shadow 中獲取並將其放入 kickstart。這不建議用於生產用途。

要以程式方式進行,請使用生成 kickstart 文件的所選語言的 crypt 庫:

紅寶石:

'password'.crypt('$6$' + (Base64.encode64(6.times.map{ Random.rand(256).chr }.join)).strip)

PHP:

crypt ('password', '$6$' . base64_encode (openssl_random_pseudo_bytes(6)));

珀爾:

crypt ('password', '$6$' . encode_base64 (join '' => map chr (rand (256)), 0..5))

Python:

crypt.crypt('password', '$6$' + base64.b64encode(os.urandom(6)))

強烈建議您每次都使用隨機鹽,就像我在這裡所做的那樣,特別是如果您在所有伺服器上使用相同的密碼。

編輯Python 3:

crypt.crypt("password", crypt.mksalt())

將呼叫替換為os.randomcrypt 特定的mksalt.

請參閱Python 標準庫:crypt : crypt.mksalt():“返回指定方法的隨機生成的鹽。如果沒有給出方法,則使用由 methods() 返回的最強方法”

編輯

  1. ’ $ 6 $ ’ 用於 SHA512。您需要將其替換為您選擇的加密類型。

2)您也可以將其中任何一個轉換為一個襯裡,以便從 bash 中完成。

編輯(有一個完整的答案,感謝miken32dawud):

3)與 GNU 相比,BSD crypt 是一種不同的實現,因此它們不兼容。如果你想在 BSD 系統(如 OSX)上使用它,你可以使用 PHP(PHP 版本 > 5.3.0)版本,因為它實現了自己的crypt()函式。

mac 上的另一種選擇是使用passlib

python -c 'import getpass; import passlib.hash; h=passlib.hash.sha512_crypt.hash(getpass.getpass()); print(h if (passlib.hash.sha512_crypt.verify(getpass.getpass("Confirm:"), h)) else "")'

或者,使用 glibc 的預設編號。回合數(5000):

python -c 'import getpass; import passlib.hash; h=passlib.hash.sha512_crypt.using(rounds=5000).hash(getpass.getpass()); print(h if (passlib.hash.sha512_crypt.verify(getpass.getpass("Confirm:"), h)) else "")'

引用自:https://serverfault.com/questions/588532