puppet運維自動化之ssh key
【puppetsshkey導讀】
sshkey,作為系統(tǒng)管理人員經(jīng)常會使用ssh連接遠程服務器,創(chuàng)建相應的密鑰,可以免去每次登錄都要輸入密碼的痛苦。另外關閉相應的password認證,用sshkey來認證也可以提高ssh安全。但有個問題,就是有N多臺服務器,如何批量創(chuàng)建sshkey認證呢?還是用shell的for循環(huán)?其實這完全可以交給puppet來搞定。本章就為大家介紹運維自動化之sshkey管理。
【puppetsshkey基礎】
在介紹puppet管理sshkey之前,我們簡單回顧下面的問題:
1.什么是ssh?
SSH為SecureShell的縮寫,由IETF的網(wǎng)絡工作小組(NetworkWorkingGroup)所制定;SSH為建立在應用層和傳輸層基礎上的安全協(xié)議。
2.ssh的工作機制
SSH分為兩部分:客戶端部分和服務端部分,工作機制大致是本地的客戶端發(fā)送一個連接請求到遠程的服務端,服務端檢查申請的包和IP地址再發(fā)送密鑰給SSH的客戶端,本地再將密鑰發(fā)回給服務端,自此連接互相建立。
3.如何創(chuàng)建ssh信任
步驟如下:a.本地生成密鑰
#ssh-keygen-tdsa-C”testbysky”
b.復制公鑰到你想要的登錄的機器(比如IP為192.168.3.235)
#scp.ssh/id_dsa.pubroot@192.168.3.235:/root/.ssh/
c.登錄到192.168.3.235,這時候還是需要輸入密碼的。
#cat~/.ssh/id_dsa.pub>>~/.ssh/authorized_keys #chmod700~/.ssh #chmod600~/.ssh/authorized_keys
至此,就可以無密碼登錄。熟悉上面的后,我們就可以為大家詳細講解,如何用puppet來管理sshkey?
【puppetsshkey概要】
puppetsshkey是主要安裝和管理SSH主機密鑰。
這種類型只知道如何安裝到/etc/ssh/ssh_known_hosts,它不能管理用戶的授權密鑰。
【puppetsshkey參數(shù)】
alias:別名,通俗的可以理解為小名,主機可能具有多個別名。如果有多個話可以用數(shù)組表示。
ensure:sshkey的基礎屬性,指定key是否生成,可以設置的值為present,absent。
key:生成的密鑰值,一般是十六進制數(shù)字的長字符串。
name:名稱,主機名。
provider:經(jīng)常不需要指定,puppet根據(jù)相應的操作系統(tǒng)選擇相應的provider.
parsed:為ssh解析和生成已知的host文件。
target:存儲的SSH密鑰文件的路徑。
type:key生成的加密類型,通過是ssh-dsa,或者ssh-rsa,備注,dsa也可以用dss來表示。
user:指定是哪個用戶的key。
【puppetsshkey示例】
假設,我創(chuàng)建好了一個用戶名為sky的用戶。由于他是SA,需要管理N臺機器,為了方便無密碼登錄。
代碼示例:
ssh_authorized_key{“hostname”:
ensure=>present,
type=>“ssh-dss”,
key=>“密鑰值”,
name=>“hostname”,
target=>“/home/sky/.ssh/authorized_keys”,
user=>‘sky’,
}
【puppetsshkey總結】
上面的例子是有個問題的,就是如果每多執(zhí)行一次的話,他都會把key追加寫到/home/sky/.ssh/authorized_keys。
puppet非常強大,創(chuàng)建用戶可以用puppetuser來管理,本章最好結合用戶。這樣可以實現(xiàn)基礎的用戶管理,用戶key管理等基礎工作,再配合puppetpackage管理軟件包。一步步朝運維自動化方向前進。
補充:剛有同學在QQ群里問到,“就是如果每多執(zhí)行一次的話,他都會把key追加寫到/home/sky/.ssh/authorized_keys”
有沒有解決方法,其實這是sky不小心,在密鑰值中寫了說明“XXX==test1.test.com”,把test1.test.com這個說明給去掉就可以解決了。















 
 
 


 
 
 
 