本發(fā)明涉及虛擬機技術(shù)領域,具體涉及一種自動化實現(xiàn)虛擬機互信的方法,基于Python實現(xiàn),基于該方式,避免了手動做互信頻繁輸入密碼操作,將機器密碼提前配置到文件,實現(xiàn)過程中無需進行任何交互,真正實現(xiàn)自動化。
背景技術(shù):
隨著云計算與大數(shù)據(jù)的興起,分布式技術(shù)得到了廣泛的應用,分布式集群涉及到大量的通信,節(jié)點之間配置互信已經(jīng)成為系統(tǒng)部署不可或缺的一部分。
在Linux系統(tǒng)集成與運維工作中,往往涉及到多臺主機,多臺主機之間進行大量的通信則免不了需要登錄,每次登錄都需要手動輸入密碼則過于繁瑣,同時,很多自動化部署產(chǎn)品、工具也依賴各節(jié)點的互信,所以實現(xiàn)各節(jié)點之間的互信不僅可以大大簡化運維人員的工作效率,也為系統(tǒng)的自動化運維工作帶來便利。
傳統(tǒng)的互信配置方法往往是手動生成公鑰,然后進行主機間的拷貝,這個過程涉及到多次密碼交互,全部由手工完成。還有一部分是將以上步驟寫成shell腳本,涉及到拷貝或者登錄的地方進行手動輸入或者利用expect來實現(xiàn)自動輸入,但過程相對繁瑣,而且遠程拷貝和遠程登錄生成公鑰的操作均需要交互,導致實現(xiàn)過程異常繁瑣且混亂。
為了解決以上實現(xiàn)多機互信中實現(xiàn)思路混亂、過程繁瑣等問題,我們提出了一種基于Python的自動化實現(xiàn)多機互信的方法,將密碼和互信ip地址采用文件的形式存放,一鍵實現(xiàn)互信操作,避免了頻繁的密碼交互。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是:本發(fā)明針對以上問題,提供一種自動化實現(xiàn)虛擬機互信的方法,解決傳統(tǒng)多機互信實現(xiàn)過程的繁瑣以及混亂,真正實現(xiàn)自動化多機互信,且保持良好的通用性。
本發(fā)明所采用的技術(shù)方案為:
一種自動化實現(xiàn)虛擬機互信的方法,所述方法通過預先將需要實現(xiàn)互信的虛機IP地址以及密碼配置在文件中,使用時將文件拷貝到任一需要互信的節(jié)點,然后配置集群機器的IP地址和密碼,即可實現(xiàn)虛擬機互信。
所述方法基于Python,通過Python paramiko模塊實現(xiàn)。
Python是一種面向?qū)ο?、直譯式計算機程序設計語言,語法簡捷而清晰,具有豐富和強大的類庫。
paramiko遵循SSH2協(xié)議,支持加密和認證的方式進行遠程服務器的連接,通常被用來做批量遠程服務器配置、文件上傳、文件下載。
所述方法實現(xiàn)步驟如下:
1)在當前登錄節(jié)點進行paramiko的安裝;
2)安裝完成后,利用paramiko的SSHClient功能讀取預先配置在當前登錄節(jié)點的文件(包含互信節(jié)點ip地址和用戶密碼),進行指定ip和密碼的遠程連接;
3)當獲取連接后,利用系統(tǒng)工具ssh-keygen生成當前節(jié)點的公鑰,然后利用paramiko的文件下載功能將該公鑰復制到當前登錄節(jié)點,這樣在當前登錄節(jié)點就可以獲取到配置文件中所有互信節(jié)點生成的公鑰文件,
4)將所有的公鑰文件寫入到遠程登錄時系統(tǒng)會讀取的authorized_keys文件中,實現(xiàn)在當前登錄節(jié)點免密碼登錄任意其他節(jié)點;
5)由于互信是相互的,即需要實現(xiàn)任意其他節(jié)點可以免密碼登錄當前登錄節(jié)點,所以還需要將當前登錄節(jié)點的authorized_keys文件拷貝到其他節(jié)點,因為當前登錄節(jié)點包含了所有節(jié)點的公鑰文件,所以此時所有的主機之間都實現(xiàn)了互信。
本發(fā)明的有益效果為:
本發(fā)明有效解決了傳統(tǒng)手工配置主機間互信的繁瑣,隨著主機規(guī)模的上升,效果越發(fā)明顯,且形成了靈活可配置的工具,保持良好的可拓展性和可移植性。
附圖說明
圖1為自動化多機互信流程示意圖。
具體實施方式
下面根據(jù)說明書附圖,結(jié)合具體實施方式對本發(fā)明進一步說明:
實施例1:
一種自動化實現(xiàn)虛擬機互信的方法,所述方法通過預先將需要實現(xiàn)互信的虛機IP地址以及密碼配置在文件中,使用時將文件拷貝到任一需要互信的節(jié)點,然后配置集群機器的IP地址和密碼,即可實現(xiàn)虛擬機互信。
實施例2
在實施例1的基礎上,本實施例所述方法基于Python,通過Python paramiko模塊實現(xiàn)。paramiko遵循SSH2協(xié)議,支持加密和認證的方式進行遠程服務器的連接,通常被用來做批量遠程服務器配置、文件上傳、文件下載。
實施例3
如圖1所示,在實施例2的基礎上,本實施例所述方法實現(xiàn)步驟如下:
1)在當前登錄節(jié)點(以下簡稱A節(jié)點)進行paramiko的安裝;
2)安裝完成后,利用paramiko的SSHClient功能讀取預先配置在A節(jié)點的文件(包含互信節(jié)點ip地址和用戶密碼),進行指定ip和密碼的遠程連接;
3)當獲取連接后,利用系統(tǒng)工具ssh-keygen生成當前節(jié)點的公鑰,然后利用paramiko的文件下載功能將該公鑰復制到A節(jié)點,這樣在當前登錄節(jié)點就可以獲取到配置文件中所有互信節(jié)點生成的公鑰文件,
4)將所有的公鑰文件寫入到遠程登錄時系統(tǒng)會讀取的authorized_keys文件中,實現(xiàn)在A節(jié)點免密碼登錄任意其他節(jié)點;
5)由于互信是相互的,即需要實現(xiàn)任意其他節(jié)點可以免密碼登錄當前登錄節(jié)點,所以還需要將A節(jié)點的authorized_keys文件拷貝到其他節(jié)點,因為A節(jié)點包含了所有節(jié)點的公鑰文件,所以此時所有的主機之間都實現(xiàn)了互信。
實施方式僅用于說明本發(fā)明,而并非對本發(fā)明的限制,有關(guān)技術(shù)領域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護范圍應由權(quán)利要求限定。