Ubuntu集群下利用Shell腳本進(jìn)行SSH免密碼登陸

轉(zhuǎn)自http://www.linuxidc.com/Linux/2017-01/140035.htm

  • Ubuntu集群下利用Shell腳本進(jìn)行SSH免密碼登陸
    • ssh-copy-id
    • expect
    • 具體的實(shí)現(xiàn)
      • expect在ubuntu下的安裝
      • 腳本代碼
    • 結(jié)論

如果我們有一個(gè)服務(wù)器的集群,在這個(gè)集群下面需要為集群的每一個(gè)節(jié)點(diǎn)實(shí)現(xiàn)SSH的免密碼,其實(shí)是一件非常繁瑣的工作渴语。此時(shí),我們可以借助Shell腳本方便的實(shí)現(xiàn)腕铸。

在開始看具體實(shí)現(xiàn)之前,我們先來看一下過程中的要點(diǎn)铛碑。分別為ssh-copy-id命令和expect命令

ssh-copy-id

ssh-copy-id命令可以把本地主機(jī)的公鑰復(fù)制到遠(yuǎn)程主機(jī)的authorized_keys文件上狠裹,ssh-copy-id命令也會給遠(yuǎn)程主機(jī)的用戶主目錄(home)和~/.ssh, 和~/.ssh/authorized_keys設(shè)置合適的權(quán)限。

expect

expect是一個(gè)免費(fèi)的編程工具語言汽烦,用來實(shí)現(xiàn)自動和交互式任務(wù)進(jìn)行通信涛菠,而無需人的干預(yù)。expect是不斷發(fā)展的,隨著時(shí)間的流逝俗冻,其功能越來越強(qiáng)大礁叔,已經(jīng)成為系統(tǒng)管理員的的一個(gè)強(qiáng)大助手。expect需要Tcl編程語言的支持迄薄,要在系統(tǒng)上運(yùn)行expect必須首先安裝Tcl琅关。

我們通過Shell可以實(shí)現(xiàn)簡單的控制流功能,如:循環(huán)讥蔽、判斷等涣易。但是對于需要交互的場合則必須通過人工來干預(yù),有時(shí)候我們可能會需要實(shí)現(xiàn)和交互程序如telnet服務(wù)器等進(jìn)行交互的功能冶伞。而expect就使用來實(shí)現(xiàn)這種功能的工具新症。

具體的實(shí)現(xiàn)

首先,我們需要在Ubuntu下面安裝expect响禽。

expect在ubuntu下的安裝

使用以下代碼檢測expect是否已經(jīng)安裝

ls /usr/bin | grep expect

如果顯示為空徒爹,則使用以下命令安裝

sudo apt-get install tcl tk expect

腳本代碼

下面給出腳本代碼,然后稍作說明芋类。在執(zhí)行下面的腳本之前必須在本機(jī)通過ssh-keygen -t rsa指令生成秘鑰隆嗅。

#!/bin/sh

SERVERS="localhost anode1 anode2 anode3"
PASSWORD=123456

auto_ssh_copy_id() {
    expect -c "set timeout -1;
        spawn ssh-copy-id $1;
        expect {
            *(yes/no)* {send -- yes\r;exp_continue;}
            *assword* {send -- $2\r;exp_continue;}
            eof        {exit 0;}
        }";
}

ssh_copy_id_to_all() {
    for SERVER in $SERVERS
    do
        auto_ssh_copy_id $SERVER $PASSWORD
    done
}

ssh_copy_id_to_all

$SERVERS里面存放了所有需要進(jìn)行ssh免密碼登錄授權(quán)的機(jī)器列表,用空格分開梗肝。

另外的一個(gè)重點(diǎn)就是auto_ssh_copy_id函數(shù)這個(gè)函數(shù)負(fù)責(zé)對一臺機(jī)器進(jìn)行ssh免密碼登錄授權(quán)榛瓮。它通過expect -c指令在命令行里面執(zhí)行了一串命令铺董。

spawn相當(dāng)于一個(gè)程序殼巫击,通過它,我們在expect中執(zhí)行了ssh-copy-id指令精续。后面的參數(shù)$1則是調(diào)用方傳入的需要進(jìn)行ssh免密碼登錄的機(jī)器名坝锰。

后續(xù)的expect塊中則是對ssh-copy-id指令可能產(chǎn)生的響應(yīng)進(jìn)行匹配,并決定后續(xù)的動作重付。如果響應(yīng)中包含”(yes/no)”則輸出yes+回車顷级。后面的exp_continue指令表示繼續(xù)進(jìn)行下一個(gè)結(jié)果的匹配。如果響應(yīng)中包含”assword”則輸出密碼+回車确垫。

結(jié)論

使用上面的代碼弓颈,我們方便的實(shí)現(xiàn)了本機(jī)到集群各節(jié)點(diǎn)間的ssh登錄,同時(shí)也體會到了Shell腳本的強(qiáng)大之處删掀。有時(shí)間好好學(xué)習(xí)研究一番翔冀。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市披泪,隨后出現(xiàn)的幾起案子纤子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件控硼,死亡現(xiàn)場離奇詭異泽论,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)卡乾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門翼悴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人幔妨,你說我怎么就攤上這事抄瓦。” “怎么了陶冷?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵钙姊,是天一觀的道長。 經(jīng)常有香客問我埂伦,道長煞额,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任沾谜,我火速辦了婚禮膊毁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘基跑。我一直安慰自己婚温,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布媳否。 她就那樣靜靜地躺著栅螟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪篱竭。 梳的紋絲不亂的頭發(fā)上力图,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機(jī)與錄音掺逼,去河邊找鬼吃媒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛吕喘,可吹牛的內(nèi)容都是我干的赘那。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼氯质,長吁一口氣:“原來是場噩夢啊……” “哼募舟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起病梢,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤胃珍,失蹤者是張志新(化名)和其女友劉穎梁肿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體觅彰,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吩蔑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了填抬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烛芬。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖飒责,靈堂內(nèi)的尸體忽然破棺而出赘娄,到底是詐尸還是另有隱情,我是刑警寧澤宏蛉,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布遣臼,位于F島的核電站,受9級特大地震影響拾并,放射性物質(zhì)發(fā)生泄漏揍堰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一嗅义、第九天 我趴在偏房一處隱蔽的房頂上張望屏歹。 院中可真熱鬧,春花似錦之碗、人聲如沸蝙眶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽幽纷。三九已至,卻和暖如春武通,著一層夾襖步出監(jiān)牢的瞬間霹崎,已是汗流浹背珊搀。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工冶忱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人境析。 一個(gè)月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓囚枪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親劳淆。 傳聞我的和親對象是個(gè)殘疾皇子链沼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 雖然有一些自動化安裝的工具,但是功能越多沛鸵,越專業(yè)的工具括勺,可能也需要越高的學(xué)習(xí)成本缆八,而我們并非專業(yè)運(yùn)維,但是又必須做...
    liuchengxu閱讀 2,242評論 0 8
  • 第 2 章 SHELL 基礎(chǔ)知識2.1 shell腳本我們在上面簡單介紹了一下什么是shell腳本疾捍,現(xiàn)在我們來進(jìn)一...
    LiWei_9e4b閱讀 1,559評論 0 0
  • 如果本機(jī)公鑰和私鑰是有密碼的奈辰,需要重新生成,并且不去設(shè)置密碼乱豆,否者免密登陸的時(shí)候奖恰, 遠(yuǎn)程主機(jī)不需要密碼了,但是每次...
    你說你要一場閱讀 688評論 0 0
  • Hadoop HA集群搭建文檔.............................................
    鐘敏_1788閱讀 1,454評論 0 0
  • Linux習(xí)慣問題: 在vim編輯時(shí)宛裕,按了ctrl + s后瑟啃,再按ctrl + q就可以繼續(xù)執(zhí)行了。ctrl + ...
    光著腳的鞋閱讀 4,491評論 0 16