再放一張真機實現圖:html
接下來就詳細講述實現細節。centos
實現過程當中吃了很多苦頭,這個不對,那個不通。好在慢慢一點點摸索出來了,經驗分享在這裏。api
但願能終結網上ssh免密碼登陸,以及SecureCRT免密碼登陸的問題。若有錯誤,歡迎指出!轉載請註明出處,謝謝!ssh
首先,明確一個目的:各主機之間免密碼登陸、CRT免密登陸其餘主機。直接輸入ssh 主機名,就能直接登陸到指定的主機上。爲何上述沒有實現Master與其餘主機間的免密碼登陸?是爲了跟免密登陸做一個對比。好,閒言少敘,先看第一個話題,各主機間的免密登陸。oop
使得各主機之間能夠將IP地址解析爲主機名。本文所配置的嚴格按照上述圖片所配置。必定根據須要本身改動。因爲我最初的目的是搭建Hadoop集羣,須要3個節點,一個master,兩個slave。全部這裏三臺主機名就爲master、slave一、slave2。centos7
爲了方便,三臺主機都建立了一個Hadoop用戶。rest
root用戶下,centos7切換用戶的命令是su。htm
useradd Hadoopblog
passwd Hadoop圖片
輸入兩次密碼:
123456
123456
root用戶下
vi /etc/hostname
將原來的主機名刪除,分別換成master、slave一、slave2
root用戶下
vi /etc/hosts
每臺主機的hosts信息下都寫上
192.168.84.130 master
192.168.84.131 slave1
192.168.84.132 slave2
至此,準備工做完成!
當準備工做完成後,作一下兩個檢查。(非必須)
1.關閉防火牆。
2.開啓ssh服務。
CentOS7下關於防火牆的命令可能跟之前版本略有不一樣。
systemctl stop firewalld.service #中止firewall
systemctl disable firewalld.service #禁止firewall開機啓動
firewall-cmd --state #查看默認防火牆狀態(關閉後顯示notrunning,開啓後顯示running)
當顯示notrunning時,即關閉成功!
systemctl start sshd.service #開啓ssh服務
sytemctl enable sshd.service #ssh服務隨開機啓動,還有個disabled
systemctl status sshd.service #查看ssh服務的狀態
#systemctl restart sshd.service
當現實Active:active(running)時,ssh服務開啓成功。
完成這兩個檢查後,接着進行下一步工做。
切換到Hadoop用戶下,cd 到家目錄。
~$ssh-keygen -t rsa -P 「」
此時就在/home/Hadoop/.ssh 下生成了一對密鑰對。
id_rsa、id_rsa.pub。分別是本機的私鑰和公鑰。
再把公鑰增長到認證的密鑰環中。
cd 到.ssh目錄
$cat id_rsa.pub >> authorized_keys
注:(1)這裏的.ssh文件夾是隱藏的。直接cd .ssh便可。
也能夠用ls -a 查看隱藏的文件夾以及文件。
(2)這裏authorized_keys 這個名字最好就這麼命名,由於配置文件中默認是這個。
切換到root用戶
vi /etc/ssh/sshd_config#修改以前能夠先作一下備份。
#cp /etc/ssh/sshd_config /home/Hadoop/backup/#這裏路徑本身選擇
找到下面5項
PermitRootLogin yes
UsePAM yes
PasswordAuthentication yes
Authentication yes
PubkeyAuthentication yes
這5項若是前面有#號註釋,首先去掉註釋。
接着,前三項的yes所有修改成no,後面兩項的不變。修改完後的5項應該爲
PermitRootLogin no
UsePAM no
PasswordAuthentication no
Authentication yes
PubkeyAuthentication yes
保存!
接着
systemctl restart sshd.service。
同理,在slave2上作相同的操做。即生成密鑰對以及修改ssh配置文件。(如今是笨方法,熟悉操做步驟,熟練了以後,能夠直接複製修改過的文件。)
把slave1中authorized_keys 文件內容複製到slave2中的authorized_keys中。
保險的方法是先將slave1中的authorized_keys複製到slave2中的其餘文件夾中,如Downloads文件夾。以後再添加,下面就是這麼作的。
scp authorized_keys Hadoop@slave2:/home/Hadoop/Downloads/
這句句命令的解釋scp authorized_keys Hadoop@slave2:/home/Hadoop/Downloads/
是將salve1中的authorized_keys 文件複製到slave2中的/home/Hadoop/Downloads/文件夾。
scp 是本地與遠程主機間的複製命令
authorized_keys 是本地文件
Hadoop@slave2:/home/Hadoop/Downloads/ 用戶名@主機名:路徑
附:scp還能夠帶參數。(自行查找)
切換到主機slave2中:
cd ~/.ssh
cat ~/Downloads/authorized_keys authorized_keys
第一句命令是切換到.ssh 目錄
第二句是將~/Downloads 目錄下的Authorize_keys文件中的內容,追加到本目錄下authorized_keys文件中。
此時,slave2的authorized_keys就同時有了salve2的公鑰和slave1的公鑰。
將slave2中的authorized_keys以一樣的方式複製到salve1中,這是就不用考慮覆蓋的問題了。
scp authorized_keys Hadoop@slave1:/home/Hadoop/.ssh/
至此,slave1與slave2可以互相免密碼登陸。
在slave1上,切換到Hadoop用戶下,直接輸入ssh slave2.便可登陸到slave2中。同理slave2也以相同方式能夠登陸到slave1中。
若是出現問題,修改.ssh以及authorized_keys 的權限。
chmod 700 ~/.ssh
chmod 644 ~/.ssh/authorized_keys
具體見另外一片博文:
連接:http://www.cnblogs.com/xubing-613/p/6844564.html
接下來是如何配置secureCRT的免密碼登陸這兩臺主機。先去吃飯,留着晚上或者明天更新!
若有錯誤,歡迎指出,不勝感激!