Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux 免密登入實戰:SSH Key 互信配置全流程與避坑指南

編輯:Linux 系統常見問題解答

在自動化部署、集群互通、rsync 備份等場景,SSH 免密登入是基礎中的基礎。本文以 192.168.201.236(Client) → 192.168.201.237(Server) 為例,詳述從產生金鑰到驗證通聯的標準流程,並整理四大常見報錯的解決方案。

環境與目標

  • Client:192.168.201.236(發起連線端)
  • Server:192.168.201.237(被連線端,SSH 埠 30330)
  • 目標:Client 以 ssh -p 30330 user@237 免密登入 Server

標準四步驟

1. Client 產生金鑰對

ssh-keygen -t rsa -b 4096 -C "auto-deploy@236"
# 一路 Enter(預設路徑 ~/.ssh/id_rsa,無密語)

產出:~/.ssh/id_rsa(私鑰,權限 600)與 ~/.ssh/id_rsa.pub(公鑰,權限 644)。

2. 將公鑰推送至 Server

ssh-copy-id -i ~/.ssh/id_rsa.pub -p 30330 user@192.168.201.237
# 若無 ssh-copy-id,手動執行:
cat ~/.ssh/id_rsa.pub | ssh -p 30330 user@237 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

3. Server 端權限鎖死(關鍵)

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
# 若家目錄權限過鬆(如 777),同樣會導致拒絕:
chmod 755 ~

原則: .ssh 只能擁有者讀寫執行;authorized_keys 只能擁有者讀寫;家目錄不可被群組/其他寫入。

4. 驗證通聯

ssh -p 30330 user@192.168.201.237
# 成功則直接進 Shell,無需輸入密碼

四大常見報錯與解法

報錯訊息原因解決指令
POSSIBLE BREAK-IN ATTEMPT! 反向 DNS 解析不一致 Client/Server 同改 GSSAPIAuthentication no、Server 另加 UseDNS no 並 systemctl restart sshd
Agent admitted failure to sign using the key. ssh-agent 未載入私鑰 ssh-add ~/.ssh/id_rsa;若失敗 eval $(ssh-agent) && ssh-add
SELinux 阻擋 sestatus 顯示 Enforcing 暫時 setenforce 0;永久 sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config 後重開機
仍提示輸入密碼 sshd_config 未啟用金鑰認證 Server 確認 PubkeyAuthentication yes、AuthorizedKeysFile .ssh/authorized_keys、RSAAuthentication yes 皆未註解,重啟 sshd

原理一分鐘速懂

  1. Client 發起連線,聲稱擁有私鑰
  2. Server 在 authorized_keys 找到對應公鑰,生成隨機挑戰字串,用公鑰加密傳回
  3. Client 用私鑰解密,回傳挑戰結果
  4. Server 驗證結果正確 → 授予 Shell

全程私鑰永不離開 Client,網路傳輸僅有公鑰加密資料,安全性遠高於密碼認證。

典型應用場景

  • rsync + cron:跨機備份無需交互輸入密碼
  • K8s / Ansible 控制節點:批量推送配置、滾動升級
  • CI/CD 流水線:構建產物自動 scp 至生產機

最佳實踐清單:

  • ✅ 使用 ed25519 替代 RSA(更短、更快、更安全):ssh-keygen -t ed25519
  • ✅ 為自動化帳號設定 command="..." 限制可執行指令(authorized_keys 行首)
  • ✅ 定期輪換金鑰(建議 90 天),透過配置管理工具批量更新
  • ✅ 禁用密碼登入:PasswordAuthentication no(確認金鑰通後再關)
Copyright © Windows教程網 All Rights Reserved