ssh免密碼登錄、secureCRT免密碼登錄詳解


 

再放一張真機實現圖:

接下來就詳細講述實現細節。

實現過程中吃了不少苦頭,這個不對,那個不通。好在慢慢一點點摸索出來了,經驗分享在這里。

希望能終結網上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的免密碼登錄這兩台主機。先去吃飯,留着晚上或者明天更新!

如有錯誤,歡迎指出,不勝感激!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM