
再放一張真機實現圖:

接下來就詳細講述實現細節。
實現過程中吃了不少苦頭,這個不對,那個不通。好在慢慢一點點摸索出來了,經驗分享在這里。
希望能終結網上ssh免密碼登錄,以及SecureCRT免密碼登錄的問題。如有錯誤,歡迎指出!轉載請注明出處,謝謝!
首先,明確一個目的:各主機之間免密碼登錄、CRT免密登錄其他主機。直接輸入ssh 主機名,就能直接登錄到指定的主機上。為什么上述沒有實現Master與其他主機間的免密碼登錄?是為了跟免密登錄作一個對比。好,閑言少敘,先看第一個話題,各主機間的免密登錄。
准備工作:
使得各主機之間可以將IP地址解析為主機名。本文所配置的嚴格按照上述圖片所配置。一定根據需要自己改動。由於我最初的目的是搭建Hadoop集群,需要3個節點,一個master,兩個slave。所有這里三台主機名就為master、slave1、slave2。
為了方便,三台主機都創建了一個Hadoop用戶。
創建Hadoop用戶
root用戶下,centos7切換用戶的命令是su。
useradd Hadoop
passwd Hadoop
輸入兩次密碼:
123456
123456
配置主機名
root用戶下
vi /etc/hostname
將原來的主機名刪除,分別換成master、slave1、slave2
配置hosts文件
root用戶下
vi /etc/hosts
每台主機的hosts信息下都寫上
192.168.84.130 master
192.168.84.131 slave1
192.168.84.132 slave2
至此,准備工作完成!
slave1與slave2的免密碼登錄
當准備工作完成后,做一下兩個檢查。(非必須)
1.關閉防火牆。
2.開啟ssh服務。
1.關閉防火牆。
CentOS7下關於防火牆的命令可能跟以前版本略有不同。
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啟動
firewall-cmd --state #查看默認防火牆狀態(關閉后顯示notrunning,開啟后顯示running)
當顯示notrunning時,即關閉成功!
2.開啟ssh服務。
systemctl start sshd.service #開啟ssh服務
sytemctl enable sshd.service #ssh服務隨開機啟動,還有個disabled
systemctl status sshd.service #查看ssh服務的狀態
#systemctl restart sshd.service
當現實Active:active(running)時,ssh服務開啟成功。
完成這兩個檢查后,接着進行下一步工作。
在slave1上生成密鑰對
切換到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 這個名字最好就這么命名,因為配置文件中默認是這個。
修改ssh配置文件
切換到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
保存!
接着
重啟ssh服務
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
ssh免密碼登錄Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 的解決方案!
接下來是如何配置secureCRT的免密碼登錄這兩台主機。先去吃飯,留着晚上或者明天更新!
如有錯誤,歡迎指出,不勝感激!
