ssh無密登入配置詳解(hadoop叢集搭建)
阿新 • • 發佈:2018-11-15
ssh無密登入原理
注:私鑰和公鑰是每個使用者獨有的,而不是機器或者伺服器的,比如一臺電腦或者伺服器或者虛擬機器,可以同時存在多個使用者,但不同使用者需要遠端登入其他伺服器或者虛擬機器時,都必須配置各自的私鑰和公鑰,而且使用者之間的各不相同
常用命令
ssh ip(遠端登入也可以是ssh hostname,條件是本機和遠端機器都配置了hosts檔案對映,如果沒有配置ssh無密登入需要輸入密碼,對於叢集管理和運作是很不方便的,多以需要在分散式叢集的時候需要配置.ssh檔案)
無密配置
- 進入家目錄(/home/username),cd 然後直接回車
- 通過命令 ls-al 檢視目錄所有檔案(包括隱藏檔案,以點開頭的檔案)
- 進入.ssh目錄
-
檢視裡面的內容。此時只有一個檔案,因為此使用者所在伺服器(或者機器,虛擬機器)沒有被其他使用者通過ssh免密登入訪問過,也就是沒有存放其他使用者的公鑰,如果有其他使用者通過ssh免密訪問此使用者所在伺服器(或者機器,虛擬機器),此使用者的伺服器(或者機器,虛擬機器)會在.ssh下生成一個檔名為known_hosts的檔案,用來記錄其他通過ssh訪問過此使用者所在伺服器(或者機器,虛擬機器)的計算機的公鑰
1.未通過ssh訪問其他使用者:
注:authorized_keys翻譯為授權碼,作用是用來存放授權過的無密登入伺服器公鑰2.通過ssh訪問其他使用者:(文章最後解釋此檔案的來源)
- 執行命令 ssh-keygen -t rsa
然後敲(三個回車),就會生成兩個檔案id_rsa(私鑰)、id_rsa.pub(公鑰)
(該命令可參考:https://blog.csdn.net/microcosmv/article/details/62054835)
- 將公鑰複製到需要免密登入的機器(伺服器上),通過如下命令
ssh-copy-id 目標ip地址(輸入命令回車後需要輸入目標ip的使用者密碼才能成功)
注:copy-id的時候另一臺機器的使用者必須線上(因為一臺Linux機器可以存在多個使用者,需要把公鑰複製到對應的伺服器中對應的使用者目錄下,則該使用者必須在對應伺服器中線上),即機器必須是開啟的
該使用者所在伺服器(或者虛擬機器,實體Linux機器)開啟切該使用者線上時候(使用者線上即登入伺服器後,沒有切換成其他使用者,可操作伺服器的使用者):
當需要複製公鑰的使用者線上時候,再通過命令複製公鑰到對應使用者的伺服器的使用者家目錄下的隱藏檔案.ssh裡面的authorized_keys中(/home/使用者/.ssh/authorized_keys)
- 主機hadoop1上的york使用者通過ssh訪問主機hadoop2上的york使用者
1.訪問前主機hadoop2上york使用者的.ssh下面檔案(未使用ssh命令連線前)
2.使用ssh連線後(連線成功)
3.使用exit命令可以退出遠端免密登入
此過程是主機hadoop1上的york使用者通過ssh命令訪問主機hadoop2(這裡的192.168.221.129)的york使用者,訪問之後會在使用ssh命令的使用者目錄下的.ssh檔案下生成一個新的檔案叫known_hosts(/home/使用者名稱/.ssh/known_hosts),此檔案用來記錄使用ssh命令後(ssh 目標ip)把目標ip主機的資訊記錄下來。目標ip主機會如文章開始的原理圖中那樣,返回一個公鑰加密的資料給使用ssh命令的使用者,返回的資料包括目標ip主機的一些資訊,如下
注:
- 1.配置ssh時候,作為namenode和resourcemanager的伺服器需要配置ssh(即namenode和resourcemanager在同一臺伺服器上),即把該伺服器的使用者的公鑰儲存到其他所有節點ssh-copy-id
- 2.如果namenode和resourcemanager不在同一臺伺服器上,那麼兩臺機器都需要配置ssh,即兩臺伺服器都需要把各自使用者的公鑰儲存到其他所有節點,因為啟動HDFS使用bin/hdfs namenode -format 和 sbin/start-dfs.sh(可以不加bin和sbin,因為配置了環境變數的)和啟動resourcemanager使用sbin/start-yarn.sh需要訪問其他節點