首頁 >系統教程 >Linux >快速設定Linux叢集內SSH免密碼存取的方法

快速設定Linux叢集內SSH免密碼存取的方法

WBOY
WBOY轉載
2024-01-16 19:15:05553瀏覽

快速設定Linux叢集內SSH免密碼存取的方法

#日常無論測試環境或生產環境,在進行多台伺服器(叢集)安裝設定的時候,經常需要對叢集內伺服器SSH存取做免密碼設定。例如Hadoop、HBase等叢集的安裝配置,或是多台伺服器為方便後續運維也需要做SSH免密配置。

結合近期建置測試環境的流程,對如何快速給多台伺服器做相互SSH存取免密配置做一個說明。主要分為幾個步驟:修改主機名稱、設定匯聚伺服器的秘鑰、匯聚其他伺服器秘鑰、拷貝匯聚秘鑰檔案、產生know_hosts檔案、拷貝know_hosts檔案。
 

1、叢集規劃

#主機IP

主機名稱

10.141.93.101

dmz01

10.141.93.102

dmz02

10.141.93.103

inside01

10.141.93.104

inside02

10.141.93.105

inside03

10.141.93.106

inside04

10.141.93.107

inside05

10.141.93.108

inside06

10.141.93.109

inside07

10.141.93.110

inside08

10.141.93.111

inside09

10.141.93.112

inside10

10.141.93.113

inside11

10.141.93.114

inside12

10.141.93.115

inside13

10.141.93.116

inside14

10.141.93.117

inside15

10.141.93.118

inside16

此叢集共有18台伺服器,劃分為DMZ區2台,INSIDE區16台。主要用於web伺服器和應用伺服器、資料庫、快取等。為了部署應用程式、管理叢集伺服器方便,將18台伺服器做SSH互訪免密碼配置。
 

2、修改主機名稱

#無論初裝系統或雲端主機,其主機名稱「localhost」或「VM_75_173_centos」都不容易進行區分伺服器作用。所以方便安裝、部署、維護方便,會重新修改主機名稱hostname。
修改主機名稱可以使用下面指令:

hostnamectl set-hostname inside01

使用上述指令修改主機名稱後重新ssh登陸,即可看到主機名稱已修改。

3、設定匯聚伺服器秘鑰

此處所謂匯聚伺服器就是選定叢集中的一台伺服器,然後其他伺服器與其做SSH免密碼信任。本文選定dmz01(10.141.93.101)為匯聚伺服器。關係圖如下圖所示:

快速設定Linux叢集內SSH免密碼存取的方法

#其他伺服器向dmz01做SSH登陸免密碼信任設定。此處dmz01就是匯聚伺服器。

設定匯聚伺服器秘鑰的指令如下所示:

[root@dmz01 ~]# ssh-keygen -t rsa

#Generating public/private rsa key pair.

Enter file in which to save the key  (/root/.ssh/id_rsa): [Enter鍵]

Enter passphrase (empty for no  passphrase): [Enter鍵]

Enter same passphrase again: [Enter鍵]

Your identification has been saved in  /root/.ssh/id_rsa.

Your public key has been saved in  /root/.ssh/id_rsa.pub.

The key fingerprint is:

43:0d:08:18:ec:9e:d6:1f:ea:5f:04:30:0f:66:26:41  root@dmz01

The key's randomart image is:

--[  RSA 2048]----

|  oE O. ..        |

|  o= =.   o       |

|  .    o . .      |

|  .     o         |

|  . o    S        |

|  . .. .        |

|  .   o ..        |

|    . ..          |

|   ....           |

------------------

進入「/root/.ssh」目錄,拷貝產生「authorized_keys」文件,使用指令如下:

cat id_rsa.pub >> authorized_keys

結果如下圖所示:

[root@inside01 .ssh]# ll
total 12
-rw-r--r-- 1 root root 395 Nov 12 16:25 authorized_keys
-rw------- 1 root root 1675 Nov 12 16:24 id_rsa
-rw-r--r-- 1 root root 395 Nov 12 16:24 id_rsa.pub

4、拷貝其他伺服器密碼鍵

經過第3節設定匯聚伺服器秘鑰後,需要依序設定dmz02,inside01,…,inside16等17台伺服器的秘鑰。方法同第三節命令。
配置完成其他17台伺服器的秘鑰後,需要將該17台伺服器的秘鑰複製拷貝到匯聚伺服器dmz01上。其拷貝指令如下:

[root@dmz01 .ssh]# ssh-copy-id -i dmz01
[root@inside01 .ssh]# ssh-copy-id -i dmz01

依序將17台的秘鑰匯聚拷貝到dmz01上。

5、拷貝匯聚秘鑰檔案

#從匯聚伺服器將匯聚的秘鑰檔案依序拷貝到其他17台伺服器的「/root/.ssh」目錄下面,指令如下所示:

[root@dmz01 .ssh]# scp authorized_keys dmz02:/root/.ssh/
[root@dmz01 .ssh]# scp authorized_keys inside01:/root/.ssh/

[root@dmz01 .ssh]# scp authorized_keys inside16:/root/.ssh/
root@inside16's password:
authorized_keys 100% 7104 6.9KB/s 00:00

如上所示進行scp拷貝秘鑰檔案“authorized_keys”,該過程需要輸入密碼。
Ssh免密碼驗證:

[root@dmz01 .ssh]# ssh dmz02
The authenticity of host 'dmz02 (10.141.68.179)' can't be established.
ECDSA key fingerprint is 22:49:b2:5c:7c:8f:73:56:89:29:8a:bd:56:49:74:66.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'dmz02,10.141.68.179' (ECDSA) to the list of known hosts.
Last login: Sat Nov 12 17:19:19 2016 from 10.141.93.186

由上面可以看出“ssh dmz02”,ssh登陸dmz02伺服器時,沒有再需要輸入密碼。但是提示需要將dmz02加入dmz01的「know hosts」清單檔案中。這樣下次ssh訪問dmz02就不會再提示需要加入know hosts清單了。
 

6、產生know_hosts檔案

從匯聚伺服器依序ssh其他17台伺服器,經過前面的免密碼設定。不需要再輸入密碼,但是都有加入know hosts清單的提示。
註:為了把自己dmz01也加入know hosts檔案中,也需要「[root@dmz01.ssh]# ssh dmz01」一下。

最後產生的know_hosts檔案內容如下所示:

快速設定Linux叢集內SSH免密碼存取的方法

#查看know_hosts檔案行數:

[root@dmz01 .ssh]# wc -l known_hosts
18 known_hosts

可以看出每個主機一行內容,表示dmz01知道了包括自己在內的所有18台伺服器。
 

7、拷貝know_hosts檔案

#經過第六節產生18台伺服器對dmz01的know host設置,將dmz01的/root/.ssh/know_hosts檔案scp拷貝到其他17台伺服器上。
ssh免密碼登陸驗證:

[root@dmz01 .ssh]# ssh inside10
Last login: Tue Nov 15 15:01:18 2016 from 10.141.93.186
[root@inside10 ~]# ssh inside15
Last login: Sat Nov 12 17:52:29 2016 from 10.141.93.186
[root@inside15 ~]# ssh dmz02
Last login: Sat Nov 12 20:05:59 2016 from 10.141.93.186
[root@dmz02 ~]# ssh dmz01
Last login: Thu Nov 17 23:56:05 2016 from 218.10.89.246
[root@dmz01 ~]# ssh inside15
Last login: Fri Nov 18 00:23:54 2016 from 10.141.114.152

ssh免密碼登陸順序:dmz01àinside10àinside15àdmz02àdmz01àinside15。
 

8、總結

本文主要涉及以下幾個指令:

hostnamectl set-hostname inside01
ssh-keygen -t rsa
ssh-copy-id -i dmz01

這篇文章就介紹到這裡了,希望大家以後多多支持本站。

以上是快速設定Linux叢集內SSH免密碼存取的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:jb51.net。如有侵權,請聯絡admin@php.cn刪除