天天看點

sshkey批量分發,管理方案sshkey批量分發,管理方案

title: ssh 批量分發

tags: sshkey,批量,分發

linux運維工程師,每天都需要維護大量的主機,特别是網際網路公司的運維工程師,需要看大量的日志,硬體狀态資訊,服務狀态資訊,有時候甚至要導入大量檔案或者配置檔案,這樣的話,如果你還一台一台登入操的話,效率低下不用說,每天的工作往往是滿滿的負荷工作,而且是機械式的一台一台看。但是如果你了解熟悉ssh就不一樣了,ssh可以通過主機間的互信,來免密碼登入,還可以利用腳本完成一些重要的工作。比如給各個主機分發hosts檔案等等。

sshkey批量分發,管理方案sshkey批量分發,管理方案

ssh 建立連接配接方式有密碼登入驗證和 密鑰登入驗證,我們現在用的是密鑰登入來讓主機之間添加互信關系。其中密鑰登入的原理圖如上圖。

用戶端和服務端建立通道連接配接

用戶端向服務端發送公鑰(其中公鑰和私鑰都可以用ssh-keygen生成,預設生成一次就是一對,分别是公鑰和私鑰,私鑰是儲存在用戶端,公鑰是儲存在服務端,其中生成公鑰私鑰可以了解為去超市買一把鎖,預設都是有鎖有鑰匙,其中鎖給服務端,鑰匙自己留着,用來去服務端開鎖)

用戶端發送過來公鑰,服務端會檢查自有的known_hosts檔案進行驗證,如果服務端發現這次通路時第一次,它會提示用戶端,讓用戶端敲yes後,服務端會把用戶端的指紋資訊寫在known_hosts,然後讓用戶端輸入服務端的密碼,如果用戶端輸正确了,服務端會把該公鑰放在自己的.ssh目錄中

用戶端帶着私鑰過來要求連接配接服務端

服務端用公鑰質詢加密發給用戶端

用戶端拿配套的私鑰進行解密後的質詢發送回服務端

驗證通過,雙方建立連接配接,用戶端終于連接配接上了服務端

scp指令和cp指令很像,cp是本地拷貝,scp是加密的遠端拷貝,參數的差別是,-p 是保持屬性,-P是端口号。

scp可以把資料從一台機器推送到另一台機器,也可以從其他伺服器把資料拉回本地。

scp和rsync的差別是,scp不支援增量拷貝,且沒有daemon模式,每一次都是全量拷貝,效率低,适合第一用,如果是增量備份還是推薦使用rsync。舉例如下:

密鑰生成就是一對,分為公鑰和私鑰,公鑰為鎖,私鑰為鑰匙,是以一定要清楚,是鑰匙開鎖,而不是鎖開鑰匙。是以私鑰自己留着,公鑰是發給對方,然後我們可以拿着私鑰去登入對方(打開對方的門)。鎖的定義很形象,生成密鑰可以想象中是去超市買鎖,是以隻要有ssh-keygen這個工具都是可以生成密鑰,密鑰是不限主機的,隻要厘清,私鑰自己拿着,公鑰給别人。我們一般使用dsa的密鑰對,生成密鑰的步驟如下:

利用ssh互信,我們可以讓主機之間免密碼登入,發送檔案給對方,這樣我們就可以通過腳本做很多事情了如下列執行個體:

sshkey批量分發,管理方案sshkey批量分發,管理方案

如圖:存儲C作為核心中的分發機,因為圖中架構所有裝置都處于内網内,為了提高各個主機的互訪能力,是以/etc/hosts檔案都對各個伺服器的主機名和ip有解析。是以各個主機的hosts檔案是保持一緻的,現在要求以分發機的hosts檔案為準,分發機C将最新的hosts檔案定時分發到各主機,覆寫原來的hosts檔案,這樣讓所有主機都可以及時更新到最新的hosts檔案,這樣如果hosts檔案有更新的話就隻要改一下分發機的hosts檔案即可。分析解答如下:

我們可以通過腳本利用ssh互信免密碼,将主機的hosts檔案通過scp推送到各個主機,但是存在一個問題,/etc目錄必須要root權限才能放進去,是以必須選擇root互信才能完成需求。這樣可以直接推送到/etc/下完成覆寫。

方法1中存在安全隐患問題,如果分發機和各個主機都是root互信的話,那麼分發機就擁有所有主機的root權限,那麼分發機可以随時百分百的控制各個主機,這樣稍有不慎就會釀成大錯,非常的不安全。我們可以在選擇用普通使用者做互信,先将hosts檔案發送到該使用者的家目錄,然後給rsync添加SUID權限,然後讓該使用者用rsync将hosts檔案在推送到本地的/etc

當然方法二也不安全,把rsync的權限設定為SUID的話,那麼任何使用者執行rsync都可以像root執行rsync一樣,那安全隐患也很大,我們繼續限制讓隻有test使用者才可以執行rsync,其他的普通使用者依然不能執行rsync,這樣安全性減少很多。是以我們利用sudo,在每個用戶端上将rsync設定為test使用者可以執行,如:

其實作在很多人批量分發都看不起sshkey,他們大都采用puppet和saltstack,誠然puppet和saltstack必然是更加專業而且更加強大,但是配置起來比起sshkey的方案難太多了,根據linux的基本原則,如果簡單易用的方法可以解決需求,那請盡量選擇簡單易用的方案,如果不滿足需求才考慮其他更優的方案,因為我們的運維法則是簡單,易用,高效,畢竟ssh key才是中小企業最基本實用的批量分發,管理方案。

繼續閱讀