Git 設定 SSH Key

SSH 金鑰生成與 GitHub 綁定流程

02 · Git & GitHub
← 返回重要備忘
為什麼需要 SSH Key?
💡 使用 SSH 協定連接 GitHub,無需每次 push/pull 時輸入帳號密碼。設定一次,永久使用。
1️⃣ Step 1:檢查是否已有 SSH Key
PowerShell
# 列出已有的 SSH 金鑰
ls ~/.ssh
💡 如果看到 id_ed25519.pubid_rsa.pub,表示已有金鑰,可直接跳到 Step 3
2️⃣ Step 2:生成新的 SSH Key
PowerShell
# 使用 Ed25519 演算法(推薦,更安全更快)
ssh-keygen -t ed25519 -C "your@email.com"

# 或使用 RSA 4096(相容性更好)
ssh-keygen -t rsa -b 4096 -C "your@email.com"

執行後會提示儲存位置,直接按 Enter 使用預設路徑 ~/.ssh/id_ed25519

提示設定密碼(passphrase),可直接按 Enter 留空(方便但安全性稍低),或輸入密碼

再次輸入密碼確認(或再按 Enter

金鑰生成完成!私鑰 id_ed25519(不可外洩),公鑰 id_ed25519.pub(要上傳到 GitHub)。
3️⃣ Step 3:啟動 ssh-agent 並加入金鑰
PowerShell
# 啟動 ssh-agent
Start-Service ssh-agent
Set-Service -Name ssh-agent -StartupType Automatic

# 將私鑰加入 ssh-agent
ssh-add ~/.ssh/id_ed25519
⚠️ 設定 ssh-agent 自動啟動需要管理員權限。若無權限,每次重啟電腦後需手動執行 Start-Service ssh-agent
4️⃣ Step 4:複製公鑰內容
PowerShell
# 顯示公鑰並複製到剪貼簿
Get-Content ~/.ssh/id_ed25519.pub | Set-Clipboard

# 或直接輸出查看
cat ~/.ssh/id_ed25519.pub
💡 公鑰格式為 ssh-ed25519 AAAA...xxx your@email.com,整行都要複製。
5️⃣ Step 5:將公鑰加入 GitHub

前往 GitHub → 點擊右上角頭像Settings

左側選單點擊 SSH and GPG keys

點擊 New SSH key 按鈕

Title:輸入識別名稱(如 Windows-Desktop

Key:貼上剛才複製的公鑰內容

點擊 Add SSH key

🔗 直接前往:github.com/settings/ssh/new
6️⃣ Step 6:測試連線
PowerShell
ssh -T git@github.com
成功時會顯示:Hi username! You've successfully authenticated...
⚠️ 首次連線會提示 Are you sure you want to continue connecting?,輸入 yes 即可。
🔧 常見問題排除
Permission denied (publickey)
# 1. 確認公鑰已正確上傳到 GitHub
# 2. 測試用詳細模式查看錯誤
ssh -vT git@github.com

# 3. 確認 ssh-agent 正在執行且有載入金鑰
ssh-add -l

# 4. 如果沒有載入,手動加入
ssh-add ~/.ssh/id_ed25519
切換 remote 從 HTTPS 改為 SSH
# 查看當前 remote URL
git remote -v

# 從 HTTPS 改為 SSH
git remote set-url origin git@github.com:username/repo.git
Windows OpenSSH 未啟用
# 檢查 OpenSSH 用戶端狀態
Get-WindowsCapability -Online | Where-Object Name -like '*SSH*'

# 安裝 OpenSSH 用戶端(需管理員)
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
🔑 進階:管理多個 SSH Key
💡 如果有多個 GitHub 帳號,或同時使用 GitHub 和 GitLab,需設定 ~/.ssh/config
~/.ssh/config
# GitHub 帳號 1(預設)
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519

# GitHub 帳號 2
Host github-work
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_work
使用方式
# 帳號 1(預設)
git clone git@github.com:user1/repo.git

# 帳號 2
git clone git@github-work:user2/repo.git