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