2010-04-08 38 views
0

目前我們的流程包括登錄到每個* nix服務器並手動更改每個服務器的密碼。我的問題是,什麼是自動執行此操作的好方法?我想可能的幾種不同的方法來做到這一點,並希望他人對他們推薦什麼樣的輸入,使用等如何腳本自動根密碼更改?

我想

一種方法是需要密碼的服務器列表的文本文件更改和提示用戶輸入新密碼的腳本,將其暫時存儲在腳本中,然後遠程連接到每臺服務器並運行命令。有一個檢查,以確保服務器可達或遠程連接超時將是一個好主意。然後輸出到控制檯,以便運行腳本的人可以看到哪些服務器成功了,哪些服務器不成功。

我想嘗試的另一種完全自動化的解決方案,但也想不出來安全地存儲新密碼的好方法。另外,對於我來說,進行一些用戶交互並不得不手動啓動腳本,因爲我們只需要每年進行6次這樣的操作。

任何想法,幫助,想法都將被大大地掩蓋。

回答

2
openssl passwd -1 $rootpw 

其中$ rootpw包含將是您的root密碼的字符串。

這將輸出,你可以只把文件或任何在加密後的字符串。我在一個腳本上使用它來設置從數據庫供應的虛擬服務器實例。我在通過網絡發送它之前計算這個散列,因此設置服務器的腳本可以使用這個散列,而不必發送純文本。

要回答你的問題,每個服務器將計算哈希值略有不同,並導致不同的哈希,但所有這些散列將等同於相同的密碼。您可以使用這些散列中的任何一個,並且在任何服務器上使用時,它們在功能上都是等效的,即使散列的實際內容不同。

例如,我散列foobar的,並且這些是結果:

rootpw=foobar 
openssl passwd -1 $rootpw 
$1$6pXamKGD$TKQqON1prArop7DpLOyAk1 

openssl passwd -1 $rootpw 
$1$4A4Mn16f$P7ap2AqNMRK8m72bG/Bve0 

openssl passwd -1 $rootpw 
$1$DyhsWEMX$i2wH6JpAqoHNFZ0YOBVHj/ 

openssl passwd -1 $rootpw 
$1$m27FIj5e$LZPxVniAeUoZcuUoNHK8c/ 

openssl passwd -1 $rootpw 
$1$qdX0NKm1$45rzxUj..LCJwWB/.fwGH0 

在同一臺機器上計算,但它們中的任何可被用於等同於密碼即使當每個那些散列的是不同的「foobar的'在任何機器上。

因此,只要打開/ etc /你找到行的陰影並粘貼在那裏:

root:$1$qdX0NKm1$45rzxUj..LCJwWB/.fwGH0:14415:0:99999:7::: 

在我的劇本我爆發,在:的和更新的元素[1],然後將數組回到一個字符串並替換文件中的字符串。如果你願意,你可以以不同的方式做,特別是如果你知道舊值(你可以通過將它分解成數組來獲得)。

我知道這個問題是一個幾個月大的,所以你可能理解了它,但我把這個在那裏爲任何未來的Google員工磨磨蹭蹭並發現這一點。

+0

如果您擁有異構基礎架構,那很好。但是如果你的「服務器」涉及各種版本和操作系統,這是行不通的。 – 2012-06-13 14:29:21

0

您應該計算哈希什麼是您的服務器計算上的密碼,併發送在這個擔保,散列形式的密碼,隨時準備投入/etc/shadow。然而,我不知道如何在實踐中如何去做到這一點。

+0

感謝您的回覆Pajton! 每個服務器都會以同樣的方式計算哈希值嗎?如果不是這樣,我認爲這是一個非常複雜的過程,可以爲每臺服務器計算散列值,並在每臺服務器上都有一個單獨的影子文件替換。由於涉及的複雜性,我想擺脫這種情況。特別是因爲我將把這項工作交給分技術小組。 :) – Webs 2010-04-08 16:09:54

+0

我相信這是可配置的,所以每個服務器可以使用相同的計算哈希方式(尤其是如果他們只使用默認配置並且是相同的OS-es)。例如,對於Apache,有一個工具'htpasswd',用於計算密碼的散列,然後將其添加到密碼文件(相當於'/ etc/shadow')。所以,我認爲應該有類似的系統密碼。 – pajton 2010-04-09 10:28:52

+0

好的,謝謝,我會再看一次。 – Webs 2010-04-10 13:04:41