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

Linux SSH 免密登入設定:金鑰對生成與分發全流程

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

核心概念

SSH 免密登入(Key-based Authentication)利用非對稱加密:

  • 本地保留私鑰 (id_rsa),嚴禁外洩。
  • 遠端部署公鑰 (id_rsa.pub) 至 ~/.ssh/authorized_keys。
  • 連線時客戶端用私鑰簽名,伺服器用公鑰驗證,無需傳輸密碼。

步驟 1:檢查現有金鑰

ls -l ~/.ssh/id_rsa.pub

若已存在,建議備份後再決定是否重新生成(重新生成會導致舊授權失效)。

步驟 2:生成金鑰對

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • -t rsa:RSA 演算法(亦可用 ed25519 更短更強)。
  • -b 4096:鑰長 4096 bits,安全性更高。
  • -C:註解,便於辨識。
  • 一路 Enter 採用預設路徑 (~/.ssh/id_rsa) 與空密碼(或自行設定 passphrase)。

步驟 3:部署公鑰至遠端

ssh-copy-id -i ~/.ssh/id_rsa.pub user@192.168.0.3

系統會提示輸入遠端密碼(最後一次),隨後將公鑰寫入遠端 ~/.ssh/authorized_keys。

步驟 4:測試免密登入

ssh user@192.168.0.3

應直接進入 Shell,無需輸入密碼。

雙向免密(雙方互信)

上述僅實現 A → B 免密。若需 B → A 亦免密,請在 B 機器上重複步驟 1~3,將 B 的公鑰複製到 A。

進階安全建議

  • 禁用密碼登入:編輯 /etc/ssh/sshd_config,設 PasswordAuthentication no,重啟 sshd。
  • 限制 root 遠端登入:PermitRootLogin prohibit-password(僅允許金鑰)。
  • 使用 ssh-agent 管理 passphrase 加密的私鑰,避免重複輸入。
  • 定期輪換金鑰(建議 6~12 個月)。

常見問題

  • Permission denied (publickey):檢查 ~/.ssh 權限 (chmod 700 ~/.ssh)、authorized_keys 權限 (chmod 600) 及擁有者。
  • SELinux 環境下需執行 restorecon -Rv ~/.ssh。
Copyright © Windows教程網 All Rights Reserved