#日常無論測試環境或生產環境,在進行多台伺服器(叢集)安裝設定的時候,經常需要對叢集內伺服器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)為匯聚伺服器。關係圖如下圖所示:
#其他伺服器向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檔案內容如下所示:
#查看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中文網其他相關文章!

本指南向您展示瞭如何使用QEMU模擬器在Linux環境中建立免費和開源DOS兼容操作系統。 這使您可以在現代硬件上運行Legacy DOS軟件和遊戲,而無需分開

Linux Mint,这款以简洁、稳定和易用性著称的操作系统,广受用户欢迎,尤其适合新手。 它默认使用Cinnamon桌面环境,提供简洁友好的用户界面。但如果您偏好不同的外观或需要更多自定义选项,可以安装其他桌面环境,例如KDE Plasma。 KDE Plasma是一个功能丰富、高度可定制且视觉效果出色的桌面环境,提供现代时尚的用户体验。它拥有广泛的自定义选项、高级窗口管理功能和精致的美感,非常适合希望更好地掌控桌面体验的用户。 本指南将逐步指导您在Linux Mint 22上安装KDE Pl

Linux系统以其强大和可靠性著称,但即使是经验丰富的用户也会遇到意想不到的问题。无论是意外删除的文件、忘记的root密码,还是系统运行缓慢,高效的故障排除技巧是成为Linux专家的关键。 本指南将介绍一些常见的Linux问题解决场景以及逐步解决方案,这些问题在系统管理员、开发人员和日常Linux用户中普遍存在。 场景一:意外删除重要文件 您意外地使用rm命令删除了一个重要文件,现在需要恢复它。与Windows和macOS不同,Linux没有内置的“回收站”来存储从终端删除的文件。 恢复选项取决

Docker 是一款強大的工具,允許您在稱為 容器 的隔離環境中運行應用程序。但是,有時您可能需要更改 Docker 文件夾的權限,以確保您的應用程序可以訪問必要的文 件和目錄。 本文將指導您完成在 Linux 系統上永久更改 Docker 文件夾權限的過程。 了解 Docker 文件夾權限 默認情況下,Docker 將其數據(包括鏡像、容器和卷)存儲在 Linux 系統上的特定目錄中。最常見的目錄是 /var/lib/docker。 這些文件夾的權限決定了誰可以讀取、寫入或執行其中的文件。如果

用Linux上的Portainer CE簡化Docker Management:逐步指南 通過命令行管理Docker容器可能令人生畏,尤其是對於新移民而言。 Portainer CE(社區版)提供免費,輕巧且直觀的Solutio

本指南詳細介紹瞭如何在Linux系統上安裝和使用Whisper AI進行實時語音到文本轉錄。 Whisper AI是一種Openai創作,可提供多種語言的高準確性轉錄。雖然主要是為批處理設計的

對於Linux終端愛好者,強大的文件經理至關重要。 儘管存在許多人,但Superfile卻是一種現代,輕巧且視覺上吸引人的選擇。本文探討了超級文件,其起源,以及為什麼它是您F的最大競爭者

Zellij:用於增強Linux工作流的現代終端多路復用器 Linux終端多路復用器是針對開發人員和系統管理員的必不可少的工具,可以簡化命令行交互。 Zellij,一個相對較新的開源多路復用器


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境