對于需要遠(yuǎn)程管理其它機(jī)器手负,一般使用遠(yuǎn)程桌面或者telnet无牵。linux一般只能是telnet飞蛹。但是telnet的缺點(diǎn)是通信不加密谤狡,存在不安全因素,只適合內(nèi)網(wǎng)訪問卧檐。為解決這個問題豌汇,推出了通信加密通信協(xié)議,即SSH(Secure Shell)泄隔。使用非對稱加密方式拒贱,傳輸內(nèi)容使用rsa或者dsa加密,可以避免網(wǎng)絡(luò)竊聽佛嬉。hadoop的進(jìn)程之間同信使用ssh方式逻澳,需要每次都要輸入密碼。為了實(shí)現(xiàn)自動化操作暖呕,需要配置ssh免密碼登陸方式斜做。
1.配置SSH
(1)基本語法:
ssh 另一臺電腦的ip地址
<!---ssh連接時出現(xiàn)Host key verification failed的解決方法--->
[admin@hadoop102 opt] $ ssh 192.168.1.103
The authenticity of host '192.168.1.103 (192.168.1.103)' can't be established.
RSA key fingerprint is cf:1e:de:d7:d0:4c:2d:98:60:b4:fd:ae:b1:2d:ad:06.
Are you sure you want to continue connecting (yes/no)?
Host key verification failed.
解決方案如下:直接輸入yes
2.生成公鑰和私鑰
[admin@hadoop102 .ssh]$ ssh-keygen -t rsa
然后敲(三個回車),就會生成兩個文件id_rsa(私鑰)湾揽、id_rsa.pub(公鑰)
3.將公鑰拷貝到要免密登錄的目標(biāo)機(jī)器上
[admin@hadoop102 .ssh]$ ssh-copy-id hadoop103
[admin@hadoop102 .ssh]$ ssh-copy-id hadoop104
解釋:
.ssh文件夾下(~/.ssh)的文件功能解釋
(1)known_hosts :記錄ssh訪問過計算機(jī)的公鑰(public key)
(2)id_rsa :生成的私鑰
(3)id_rsa.pub :生成的公鑰
(4)authorized_keys :存放授權(quán)過得無密登錄服務(wù)器公鑰
4.配置ssh免密碼登錄(三個節(jié)點(diǎn)hadoop102(主節(jié)點(diǎn))瓤逼、hadoop103、hadoop104)
(1) 主節(jié)點(diǎn)配置
1.首先到用戶主目錄(cd ~)库物,ls -a查看文件霸旗,其中一個為“.ssh”,該文件價是存放密鑰的戚揭。待會我們生成的密鑰都會放到這個文件夾中诱告。
2.現(xiàn)在執(zhí)行命令生成密鑰: ssh-keygen -t rsa -P “” (使用rsa加密方式生成密鑰)回車后,會提示三次輸入信息民晒,我們直接回車即可精居。
3.進(jìn)入文件夾cd .ssh (進(jìn)入文件夾后可以執(zhí)行l(wèi)s -a 查看文件)
4.將生成的公鑰id_rsa.pub 內(nèi)容追加到authorized_keys(執(zhí)行命令:cat id_rsa.pub >> authorized_keys)
(2)從節(jié)點(diǎn)配置
1.以同樣的方式生成秘鑰(ssh-keygen -t rsa -P “” )锄禽,然后hadoop103和hadoop104將生成的id_rsa.pub公鑰追加到hadoop102的authorized_keys中)
2.在hadoop103中執(zhí)行命令
scp id_rsa.pub hadoop102:/root/.ssh/id_rsa.pub.hadoop103 ,
在hadoop104中執(zhí)行命令
scp id_rsa.pub hadoop102:/root/.ssh/id_rsa.pub.hadoop104
3.進(jìn)入hadoop102執(zhí)行命令:
cat id_rsa.pub.hadoop103 >> authorized_keys
cat id_rsa.pub.hadoop103 >> authorized_keys
4.最后將生成的包含三個節(jié)點(diǎn)的秘鑰的authorized_keys 復(fù)制到hadoop103和hadoop104的.ssh目錄下
scp authorized_keys hadoop103:/root/.ssh/
scp authorized_keys hadoop104:/root/.ssh/