點選上方藍字關注我
資料庫或大資料叢集部署時,經常需要進行伺服器間免密(互信)操作,有些公司的DBA或大資料運維工程師擁有相應伺服器的密碼,而對于安全意識比較強的公司,DBA無作業系統賬号的密碼,隻能通過跳闆機(堡壘機)登入相關伺服器,此時該如何配置互信呢(可能有些工作了十幾年的人員都還不會),本文通過CentOS7作業系統進行示範。
1. 有密碼的情況
1.1 生成 SSH 密鑰對
在本地計算機上使用 ssh-keygen 指令生成 SSH 密鑰對。生成的密鑰對包括公鑰和私鑰,公鑰将用于免密登入。
ssh-keygen
在生成密鑰對時,需要指定密鑰類型(預設為 RSA),密鑰長度(預設為 2048 位),并為私鑰設定密碼(可選)。
1.2 将公鑰複制到伺服器
将本地計算機上的公鑰複制到伺服器上,可以使用 ssh-copy-id 指令,該指令會将公鑰添加到伺服器上的 authorized_keys 檔案中。要使用此指令,需要在指令中指定要将公鑰添加到的伺服器的使用者名和 IP 位址。
ssh-copy-id [email protected]_ip
1.3 測試免密登入
測試使用 SSH 連接配接到伺服器:
ssh [email protected]_ip
如果一切正常,将無需輸入密碼即可登入到伺服器。
需要注意的是,為了確定安全,應該禁用密碼登入。可以編輯伺服器上的 SSH 配置檔案 /etc/ssh/sshd_config,并将 PasswordAuthentication 選項設定為 no,以禁用密碼登入。完成後,重新啟動 SSH 服務以應用更改:
sudo systemctl restart sshd
這樣,就可以在 CentOS 伺服器上配置 SSH 公鑰認證,實作免密登入了。
2. 無密碼的情況
2.1 生成SSH密鑰對
ssh-keygen
在生成密鑰對時,需要指定密鑰類型(預設為 RSA),密鑰長度(預設為 2048 位),并為私鑰設定密碼(可選)。
2.2 手動拷貝公鑰到目标伺服器
手動拷貝上一步生成密鑰對中的公鑰内容,公鑰存儲在 ~/.ssh/id_rsa.pub檔案中,将其複制到目标伺服器的authorized_keys檔案中。
注意,authorized_keys每一行代表一個已知主機,每行末尾不要有多餘的字元(如空格等),否則将無法登入
2.3 測試免密登入
測試使用 SSH 連接配接到伺服器:
ssh [email protected]_ip
如果一切正常,将無需輸入密碼即可登入到伺服器。
3. 小結
公鑰與私鑰的用途:
在 SSH 連接配接中,公鑰和私鑰用于 SSH 公鑰認證。當您連接配接到遠端伺服器時,伺服器會向您的 SSH 用戶端發送一個加密的請求,其中包括您本地計算機上的公鑰。如果伺服器在其 authorized_keys 檔案中找到您的公鑰,則伺服器将認為您是可信任的,并允許通路伺服器而不需要輸入密碼。
authorized_keys的作用:
authorized_keys 是 SSH 協定中用于公鑰認證的檔案名。當使用 SSH 連接配接到遠端伺服器時,SSH 用戶端會向伺服器發送一個加密的請求,其中包括本地計算機上的公鑰。伺服器會檢查在 authorized_keys 檔案中是否存在對應的公鑰,如果存在,則認為是可信任的,并允許通路伺服器而不需要輸入密碼。
值得注意的是,authorized_keys 檔案是一個文本檔案,每行包含一個公鑰。通常情況下,當在本地計算機上生成 SSH 密鑰對時,會自動在 ~/.ssh/authorized_keys 檔案中添加本機公鑰。如果需要添加其他使用者的公鑰以實作 SSH 公鑰認證,則可以将該使用者的公鑰添加到伺服器上的 authorized_keys 檔案中。
往期精彩回顧
1. MySQL高可用之MHA叢集部署
2. mysql8.0新增使用者及加密規則修改的那些事
3. 比hive快10倍的大資料查詢利器-- presto
4. 監控利器出鞘:Prometheus+Grafana監控MySQL、Redis資料庫
5. PostgreSQL主從複制--實體複制
6. MySQL傳統點位複制線上轉為GTID模式複制
7. MySQL敏感資料加密及解密
8. MySQL資料備份及還原(一)
9. MySQL資料備份及還原(二)
掃碼關注