讓多臺(tái)服務(wù)器之間 SSH 免密登錄

讓多臺(tái)服務(wù)器之間 SSH 免密登錄,也就是:

A 登錄 B、B 登錄 C 等,不再輸入密碼。

我?guī)湍惴殖扇齻€(gè)階段來(lái)搞定,一步步講得非常清晰??


?? 一、目標(biāo)概念:SSH 免密的原理

當(dāng)你執(zhí)行:

ssh-keygen

它會(huì)生成兩把鑰匙:

文件 說(shuō)明
~/.ssh/id_rsa 私鑰(留在本機(jī))
~/.ssh/id_rsa.pub 公鑰(發(fā)給目標(biāo)機(jī))

然后把本機(jī)的 公鑰內(nèi)容 加進(jìn)目標(biāo)機(jī)的:

~/.ssh/authorized_keys

這樣 SSH 登錄時(shí)系統(tǒng)會(huì)驗(yàn)證密鑰匹配,無(wú)需密碼。


?? 二、單機(jī)免密配置步驟(以 root 為例)

假設(shè)我們有三臺(tái)機(jī)器:

主機(jī)名 IP 說(shuō)明
server01 192.168.10.11 主控機(jī)(生成密鑰)
server02 192.168.10.12 目標(biāo)機(jī) A
server03 192.168.10.13 目標(biāo)機(jī) B

1?? 在主控機(jī)(server01)生成 SSH 密鑰

執(zhí)行:

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -P ''

解釋?zhuān)?/p>

  • -t rsa:使用 RSA 算法
  • -b 4096:密鑰長(zhǎng)度
  • -f:指定文件路徑
  • -P '':空密碼(非交互式)

生成后會(huì)有兩個(gè)文件:

ls ~/.ssh/id_rsa*
# 輸出:
# ~/.ssh/id_rsa  ~/.ssh/id_rsa.pub

2?? 把公鑰分發(fā)給目標(biāo)機(jī)

執(zhí)行以下命令,把公鑰復(fù)制到目標(biāo)服務(wù)器:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.12
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.13

系統(tǒng)會(huì)提示輸入一次密碼,然后自動(dòng)完成公鑰配置。

作用: 會(huì)自動(dòng)將 id_rsa.pub 追加進(jìn) /root/.ssh/authorized_keys


3?? 測(cè)試免密

現(xiàn)在在 server01 上執(zhí)行:

ssh root@192.168.10.12

? 如果直接登錄進(jìn)去了,不再提示輸入密碼,說(shuō)明免密成功。


?? 三、腳本化批量配置(推薦)

如果你要在多臺(tái)機(jī)器之間都打通,可以讓所有機(jī)器互信:
例如:

servers=(192.168.10.11 192.168.10.12 192.168.10.13)

for host in ${servers[@]}; do
  echo "=== 配置 ${host} ==="
  ssh-keygen -f ~/.ssh/id_rsa -P '' -q || true
  ssh-copy-id -i ~/.ssh/id_rsa.pub root@${host}
done

?? 注意:第一次連接每臺(tái)機(jī)器時(shí),會(huì)要求確認(rèn)“yes”,然后輸入一次密碼。


?? 四、檢查權(quán)限(關(guān)鍵)

確保權(quán)限正確,否則免密會(huì)失效:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

?? 五、進(jìn)階技巧(多機(jī)互信)

如果是一個(gè)集群(例如 server01、server02、server03 都要互相免密):

  1. 任意一臺(tái)(比如 server01)生成密鑰;
  2. ssh-copy-id 將公鑰發(fā)給 所有節(jié)點(diǎn)(包括自己)
  3. 在每臺(tái)機(jī)器的 /root/.ssh/authorized_keys 都包含相同的公鑰;
  4. 所有節(jié)點(diǎn)間的登錄都會(huì)免密成功。

? 六、完整可執(zhí)行命令總結(jié)

你可以直接復(fù)制執(zhí)行 ??

# 1. 生成密鑰(只需執(zhí)行一次)
ssh-keygen -f ~/.ssh/id_rsa -P ''

# 2. 授權(quán)本機(jī)
grep -f /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys || cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys

# 3. 分發(fā)到其他節(jié)點(diǎn)
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.12
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.10.13

# 4. 測(cè)試免密
ssh root@192.168.10.12
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容