Fedora SSH無密碼驗證配置

原文轉載: http://blog.163.com/darkness@yeah/blog/static/1317744842011325111433803/



Namenode
作爲客戶端,要實現無密碼公鑰認證,連接到服務端datanode上時,需要在namenode上生成一個密鑰對,包括一個公鑰和一個私鑰,而後將公鑰複製到datanode上。
namenode通過ssh連接datanode時,datanode就會生成一個隨機數並用namenode的公鑰對隨機數進行加密,併發送給namenode
namenode收到加密數之後再用私鑰進行解密,並將解密數回傳給datanodedatanode確認解密數無誤之後就允許namenode進行連接了。
這就是一個公鑰認證過程,其間不需要用戶手工輸入密碼。
重要過程是將客戶端
namenode公鑰複製到datanode上。


1)所有機器上生成密碼對

所有節點上執行以下命令:

# ssh-keygen
這將在/root/.ssh/目錄下生成一個私鑰id_rsa和一個公鑰id_rsa.pub

namenode節點上面的id_rsa.pub 複製到所有datanode節點/root/.ssh/位置。

(注意:原文沒有細說,這是指把id_rsa.pub先拷貝成authorized_keys,再將authorized_keys複製到其它datanode上的)

# cp id_rsa.pub authorized_keys

namenode的公鑰
# chmod 644 authorized_keys

使用SSH協議將namenode的公鑰信息authorized_keys複製到所有DataNode.ssh目錄下(.ssh下最初沒有authorized_keys,如果有,則需要複製追加,後面會講到如何追加)
# scp authorized_keys [data節點ip地址]:/root/.ssh


這樣配置過後,namenode可以無密碼登錄所有datanode,可以通過命令來驗證
# ssh [節點ip地址]   


2)配置每個Datanode無密碼登錄Namenode

(a)原理

Namenode連接datanodenamenode是客戶端,需要將namenode上的公鑰複製到datanode上,那麼,如果datanode主動連接namenodedatanode是客戶端,此時需要將datanode上的公鑰信息追加到namenode中的authorized_keys之中。(此時,由於namenode中已經存在authorized_keys文件,所以這裏是追加)

如果進一步需要datanode之間實現公鑰無密碼驗證,則同樣需要相互之間追加公鑰信息

(b)將各個datanode上的id_rsa.pub追加到namenodeauthorized_keys

 

在所有datanode上依次執行如下命令:

scp id_rsa.pub [namenode ip地址]:/root/.ssh/[datanode ip地址.id_rsa].pub

這將datanode上之前產生的公鑰id_rsa.pub複製到namenode上的.ssh目錄中,並重命名爲datanode ip地址.id_rsa.pub,這是爲了區分從各個datanode上傳過來的公鑰。

複製完畢,在namenode上執行以下命令,將每個datanode的公鑰信息追加:

# cat [datanode ip地址].id_rsa.pub >> authorized_keys


這樣,namenodedatanode之間便可以相互ssh上並不需要密碼......

注意:整個過程中只涉及到創建密鑰,複製公鑰,添加公鑰內容,沒有更改配置文件,實際上配置文件/etc/ssh/sshd_config中開啓了公鑰驗證

{

RSAAuthentication yes

PubkeyAuthentication yes

}



3) 注意
1.以上過程爲兩臺機器的無密碼訪問, 如果需要N臺電腦訪問無需密碼, 道理跟上面操作相同。
2.以上過程必須保證每臺機器都安裝和配置好了ssh, 並且保證每臺機器固定了IP (不然你弄好了無密碼訪問,關機重啓後IP一變你就白配了)。


發佈了25 篇原創文章 · 獲贊 3 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章