沒有密碼怎么配置互信?
數據庫或大數據集群部署時,經常需要進行服務器間免密(互信)操作,有些公司的DBA或大數據運維工程師擁有相應服務器的密碼,而對于安全意識比較強的公司,DBA無操作系統賬號的密碼,只能通過跳板機(堡壘機)登錄相關服務器,此時該如何配置互信呢(可能有些工作了十幾年的人員都還不會),本文通過CentOS7操作系統進行演示。
1、有密碼的情況
(1)生成 SSH 密鑰對
在本地計算機上使用 ssh-keygen 命令生成 SSH 密鑰對。生成的密鑰對包括公鑰和私鑰,公鑰將用于免密登錄。
在生成密鑰對時,需要指定密鑰類型(默認為 RSA),密鑰長度(默認為 2048 位),并為私鑰設置密碼(可選)。
(2)將公鑰復制到服務器
將本地計算機上的公鑰復制到服務器上,可以使用 ssh-copy-id 命令,該命令會將公鑰添加到服務器上的 authorized_keys 文件中。要使用此命令,需要在命令中指定要將公鑰添加到的服務器的用戶名和 IP 地址。
(3)測試免密登錄
測試使用 SSH 連接到服務器:
如果一切正常,將無需輸入密碼即可登錄到服務器。
需要注意的是,為了確保安全,應該禁用密碼登錄。可以編輯服務器上的 SSH 配置文件 /etc/ssh/sshd_config,并將 PasswordAuthentication 選項設置為 no,以禁用密碼登錄。完成后,重新啟動 SSH 服務以應用更改:
這樣,就可以在 CentOS 服務器上配置 SSH 公鑰認證,實現免密登錄了。
2、無密碼的情況
(1)生成SSH密鑰對
在生成密鑰對時,需要指定密鑰類型(默認為 RSA),密鑰長度(默認為 2048 位),并為私鑰設置密碼(可選)。
(2)手動拷貝公鑰到目標服務器
手動拷貝上一步生成密鑰對中的公鑰內容,公鑰存儲在 ~/.ssh/id_rsa.pub文件中,將其復制到目標服務器的authorized_keys文件中。
注意,authorized_keys每一行代表一個已知主機,每行末尾不要有多余的字符(如空格等),否則將無法登錄
(3)測試免密登錄
測試使用 SSH 連接到服務器:
如果一切正常,將無需輸入密碼即可登錄到服務器。
3、小結
公鑰與私鑰的用途:
在 SSH 連接中,公鑰和私鑰用于 SSH 公鑰認證。當您連接到遠程服務器時,服務器會向您的 SSH 客戶端發送一個加密的請求,其中包括您本地計算機上的公鑰。如果服務器在其 authorized_keys 文件中找到您的公鑰,則服務器將認為您是可信任的,并允許訪問服務器而不需要輸入密碼。
authorized_keys的作用:
authorized_keys 是 SSH 協議中用于公鑰認證的文件名。當使用 SSH 連接到遠程服務器時,SSH 客戶端會向服務器發送一個加密的請求,其中包括本地計算機上的公鑰。服務器會檢查在 authorized_keys 文件中是否存在對應的公鑰,如果存在,則認為是可信任的,并允許訪問服務器而不需要輸入密碼。
值得注意的是,authorized_keys 文件是一個文本文件,每行包含一個公鑰。通常情況下,當在本地計算機上生成 SSH 密鑰對時,會自動在 ~/.ssh/authorized_keys 文件中添加本機公鑰。如果需要添加其他用戶的公鑰以實現 SSH 公鑰認證,則可以將該用戶的公鑰添加到服務器上的 authorized_keys 文件中。