前提配置:使用root登錄修改配置文件:/etc/ssh/sshd_config,將其中三行的注釋去掉,如下:
然后重啟ssh服務:service sshd restart。最后退出root,以下所有操作都在hadoop用戶下進行。
主機信息如下:
如上圖,當前登錄用戶為hadoop,主機名為slave.hadoop,與master.hadoop主機的網(wǎng)絡是通暢的。
當前未配置RSA校驗的情況下,用ssh連接主機是需要輸入密碼的,如下:
如上圖,執(zhí)行ssh master.hadoop后會停留在下一行等待使用者輸入master.hadoop主機hadoop用戶的登錄密碼。
為避免此情況發(fā)生,進行如下操作以讓主機在ssh連接時自動驗證后登錄。
首先,執(zhí)行命令 ssh-keygen -t dsa 生成密鑰對,如下:
如上圖,密鑰文件按照默認方式,在主目錄/home/hadoop下的隱藏目錄.ssh中生成,分別為id_dsa和id_dsa.pub,后者為公鑰,如下圖:
根據(jù)配置文件/etc/ssh/sshd_config中的AuthorizedKeysFile項的取值:.ssh/authorized_keys,公鑰需要導入到該文件中才能實現(xiàn)校驗,如下:
至此離成功只有一步之遙了。CentOS默認新生成的文件權限為:-rw-rw-r--,即自己和群組用戶都可以重寫該文件,這被認為是不夠安全的。如上圖,由于此前我的主機上并未存在authorized_keys文件,現(xiàn)在由于重定向輸出新建了該文件,因此該文件的默認權限為-rw-rw-r--仍舊不夠安全。需把群組中的w權限去掉。可使用命令:chmod 644 authorized_keys。網(wǎng)上的資料中,都是直接chmod 600 authorized_keys,即群組和其他用戶連讀取文件內(nèi)容的權限都沒有,當然這樣是最安全的,但是系統(tǒng)只要求到除了自己之外其他所有用戶均不能改動文件就可以了。
如上圖,slave.hadoop已經(jīng)能夠使用ssh無密碼登錄本機了。那么如何讓它無密碼登錄到Master.hadoop主機中呢?當然是分發(fā)公鑰文件id_dsa.pub的內(nèi)容到master.hadoop主機上了。如下圖:
如上圖,執(zhí)行命令 cat ~/.ssh/id_dsa.pub | ssh hadoop@master.hadoop 'cat - >> ~/.ssh/authorized_keys',并輸入master.hadoop主機的hadoop用戶的登錄密碼,即可將公鑰發(fā)送到master.hadoop并追加到其authorized_keys文件中。
如上圖,已經(jīng)可以在slave.hadoop主機使用ssh無密碼登錄主機master.hadoop了。