當您在 macOS 上首次嘗试使用 git push 將代码推送至 GitHub 时,会经常遇到要求輸入帳號密碼的提示。这是由於 GitHub 於 2021 年後已停止支持傳统的密碼验证方式。

本文將詳細介紹多種解決方案,並提供最优化的设定流程。

問题背景

为什麼需要身份验证?

  • GitHub 需要确认您的推送权限
  • 傳统密碼验证已被淘汰,安全性不足
  • 每次手动輸入憑证影響开发效率

支持的验证方式

  1. Personal Access Tokens (PAT) - 替代密碼
  2. SSH 金鑰 - 更安全且便捷
  3. GitHub CLI - 官方命令行工具

解決方案一:使用 Personal Access Tokens

步驟 1:生成 Personal Access Token

  1. 登入 GitHub 帳戶
  2. 点击右上角头像 → Settings
  3. 左側選单選擇 Developer settings
  4. 選擇 Personal access tokens → Tokens (classic)
  5. 点击 Generate new token → Generate new token (classic)

GitHub: Personal access tokens

GitHub: Personal access tokens

步驟 2:设定 Token 权限

Note: “MacBook Pro 开发憑证” # 識別名稱 Expiration: 推薦選擇 90 天或 1 年 Scopes: 至少勾選:

  • repo (完整倉庫权限)
  • workflow (如果需要 GitHub Actions)

步驟 3:儲存並使用 Token

首次使用时,用 token 代替密碼

git push origin main

系统提示时:

Username: 輸入您的 GitHub 用戶名(例如我们家的 mountos)

Password: 貼上剛才生成的 token(非密碼)

解決方案二:设定憑证儲存助手

啟用 macOS Keychain 整合

设定 Git 使用 macOS 鑰匙圈儲存憑证

git config —global credential.helper osxkeychain

验证设定

git config —global —get credential.helper

首次使用与儲存

執行 push 操作

git push origin main

輸入用戶名和 token 後,系统会提示:

“是否要將憑证儲存至鑰匙圈?“

選擇”永遠允許”或”允許”

管理已儲存的憑证

查看鑰匙圈中的 Git 憑证

security find-internet-password -s github.com

如果需要刪除舊憑证

security delete-internet-password -s github.com

解決方案三:SSH 金鑰验证(推薦長期使用)

步驟 1:生成 SSH 金鑰对

使用更安全的 Ed25519 算法

ssh-keygen -t ed25519 -C “[email protected]”

或使用傳统 RSA(如遇兼容性問题)

ssh-keygen -t rsa -b 4096 -C “[email protected]”

保存路徑使用默认即可(~/.ssh/id_ed25519)

步驟 2:將公鑰添加到 GitHub

複製公鑰內容到剪貼板

pbcopy < ~/.ssh/id_ed25519.pub

或手动顯示並複製

cat ~/.ssh/id_ed25519.pub

  1. 訪問 GitHub → Settings → SSH and GPG keys
  2. 点击 New SSH key
  3. 标题:識別此电脑(如 “MacBook Pro”)
  4. 金鑰类型:保持 Authentication Key
  5. 貼上公鑰內容

步驟 3:设定倉庫使用 SSH

检查當前遠端地址

git remote -v

如果顯示 https 地址,切換为 SSH

git remote set-url origin [email protected]:username/repository.git

验证变更

git remote -v

应該顯示:origin [email protected]:username/repository.git (fetch)

origin [email protected]:username/repository.git (push)

步驟 4:测试 SSH 連接

测试 SSH 連接

ssh -T [email protected]

成功时会顯示:

“Hi username! You’ve successfully authenticated…”

解決方案四:使用 GitHub CLI

安裝与设定

使用 Homebrew 安裝

brew install gh

登入 GitHub

gh auth login

跟隨互动式指引:

✓ What account do you want to log into? GitHub.com

✓ What is your preferred protocol for Git operations? SSH 或 HTTPS

✓ Authenticate Git with your GitHub credentials? Yes

✓ How would you like to authenticate? Login with a web browser

使用 GitHub CLI 操作

克隆倉庫(自动设定认证)

gh repo clone username/repository

进入倉庫目錄

cd repository

进行修改後推送

git add . git commit -m “提交讯息” git push # 無需額外认证

疑难排解

常見問题与解決方法

1. 憑证仍然要求輸入

清除缓存憑证

git credential-osxkeychain erase host=github.com protocol=https

或重新设定遠端地址

git remote set-url origin https://[email protected]/username/repository.git

2. SSH 連接失敗

测试 SSH 連接詳細信息

ssh -Tv [email protected]

检查 SSH 代理

ssh-add -l

添加金鑰到代理

ssh-add ~/.ssh/id_ed25519

3. 多帳戶切換

为不同倉庫设定不同用戶

cd /path/to/project git config user.name “公司用戶名” git config user.email “[email protected]”

回到个人項目

cd /path/to/personal-project git config user.name “个人用戶名” git config user.email “[email protected]”

最佳实踐建議

安全性考量

  1. Personal Access Tokens:
  • 设定合理的過期时间
  • 僅授予必要权限
  • 定期輪換更新
  1. SSH 金鑰:
  • 为金鑰设定強密碼
  • 使用 SSH 代理管理金鑰
  • 定期審查已授权的金鑰

开发效率优化

全域设定用戶信息(替換为您的信息)

git config —global user.name “您的姓名” git config —global user.email “您的[email protected]”

设定默认分支名稱

git config —global init.defaultBranch main

啟用彩色輸出

git config —global color.ui auto

團隊協作设定

设定推送行为(推薦)

git config —global push.default simple

啟用自动设定上游分支

git config —global branch.autoSetupMerge always

總結

根据使用情境選擇最適合的方案:

  • 臨时项目:使用 Personal Access Tokens + 鑰匙圈儲存
  • 長期开发:设定 SSH 金鑰验证(最推薦)
  • 頻繁的 GitHub 操作:使用 GitHub CLI

透過正确的身份验证设定,您可以在 macOS 上享受無縫的 Git 推送体验,同时确保代码的安全性与开发效率。

✦ 独立报道 · 读者支持 ✦

以实际行动支持独立观点,与我们一同走得更远

每一篇条理清晰的分析、每一次不随波逐流的观察,背后都是对真实与品质的坚持。我们拒绝内容农场与算法流量绑架,坚持自由独立的客观发声。

维持高品质的原创写作与独立运营,需要持续的实质力量。您可以选择一次性赞助或每月定期支持,通过 Google 安全结账,与我们一同守护这份深刻与清醒。

由 Google 安全处理付款 · 可随时在 Google 账户管理或取消