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

 

再放一張真機實現圖:html

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

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

但願能終結網上ssh免密碼登陸,以及SecureCRT免密碼登陸的問題。若有錯誤,歡迎指出!轉載請註明出處,謝謝!ssh

首先,明確一個目的:各主機之間免密碼登陸、CRT免密登陸其餘主機。直接輸入ssh 主機名,就能直接登陸到指定的主機上。爲何上述沒有實現Master與其餘主機間的免密碼登陸?是爲了跟免密登陸做一個對比。好,閒言少敘,先看第一個話題,各主機間的免密登陸。oop

準備工做:

使得各主機之間能夠將IP地址解析爲主機名。本文所配置的嚴格按照上述圖片所配置。必定根據須要本身改動。因爲我最初的目的是搭建Hadoop集羣,須要3個節點,一個master,兩個slave。全部這裏三臺主機名就爲master、slave一、slave2。centos7

爲了方便,三臺主機都建立了一個Hadoop用戶。rest

建立Hadoop用戶

root用戶下,centos7切換用戶的命令是su。htm

useradd Hadoopblog

passwd Hadoop圖片

輸入兩次密碼:

123456

123456

配置主機名

root用戶下

vi /etc/hostname

將原來的主機名刪除,分別換成master、slave一、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的免密碼登陸這兩臺主機。先去吃飯,留着晚上或者明天更新!

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

相關文章
相關標籤/搜索