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)作為匯聚服務器。關係圖如下所示:

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文件中,也需要“[[email protected]]# ssh dmz01”一下。

最後生成的know_hosts文件內容如下所示:

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


分享到:


相關文章: