GitHub SSH密钥配置与多账号管理说明文档(Mac 专属完整版)
一、文档目的
本文档统一整理 Mac 环境下 GitHub SSH 密钥的 配置、新增、多账号管理、安全规则、丢失处理、日常维护 所有核心操作,解决 HTTPS 密码失效、认证失败、多账号冲突、密钥丢失等问题,可长期保存备查。
二、核心基础知识点(必记)
- HTTPS 失败根本原因
GitHub 已彻底禁用密码登录 HTTPS 方式,不再支持账号密码认证:
- ❌ 错误:用户名 + 密码 登录 git
- ✅ 正确方案:SSH 密钥免密 / Token 临时登录
- 公钥 & 私钥核心区别(重中之重)
- 私钥(id_ed25519):本地唯一、绝对机密、禁止外泄,等同于你的 GitHub 登录钥匙
- 公钥(id_ed25519.pub):可公开,上传保存在 GitHub 账号后台
- GitHub 只存公钥,不存私钥,私钥丢失无法从云端恢复
- 密钥文件名规则
- 默认名:id_ed25519(系统自动生成,单账号使用)
- 可自定义:支持自定义命名(如 id_ed25519_personal、id_ed25519_work)
- 自定义用途:解决一台电脑多个 GitHub 账号的密钥冲突问题
三、单账号标准配置流程(基础版)
- 生成 SSH 密钥
ssh-keygen -t ed25519 -C "你的GitHub注册邮箱"
三次提示 全部直接回车(无需设置密码) - 复制公钥到剪贴板
pbcopy < ~/.ssh/id_ed25519.pub - GitHub 后台添加密钥
- 登录 GitHub → 右上角头像 → Settings
- 找到 SSH and GPG keys → New SSH key
- Title:自定义设备备注(如 MacMini-M4)
- Key type:默认 Authentication Key
- Key 框粘贴公钥 → 点击 Add SSH key
- 测试连通性
ssh -T git@github.com
看到 Hi xxx! You've successfully authenticated 即为配置成功 - 克隆代码(免密成功)
git clone git@github.com:用户名/仓库名.git
四、新增第二个/多个 GitHub 账号密钥(关键)
一台 Mac 管理多个 GitHub 账号,必须自定义密钥名称 + 配置 Host 区分,不能使用默认文件。 - 生成新账号独立密钥(自定义名称)
ssh-keygen -t ed25519 -C "新账号邮箱" -f ~/.ssh/id_ed25519_work
- -f:指定自定义文件名,不覆盖旧密钥
- 全程回车,无密码
- 编辑多账号配置文件
nano ~/.ssh/config
写入以下完整配置(兼容旧账号+新账号):
原有个人主账号(默认密钥)
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519
新增工作/第二个账号(自定义密钥)
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
保存退出:Ctrl+O → 回车 → Ctrl+X
- 添加新密钥到新 GitHub 账号
pbcopy < ~/.ssh/id_ed25519_work.pub
登录 新 GitHub 账号,粘贴添加 SSH 密钥。 - 测试新账号连通
ssh -T git@github-work - 新账号使用方式
克隆、拉取、推送必须使用自定义 Host:
git clone git@github-work:新账号用户名/仓库名.git
五、密钥丢失应急处理(高频问题) - 重要结论
- ❌ 无法从 GitHub 恢复私钥,GitHub 仅保存公钥
- ❌ 仅复制网页公钥无法登录,无私钥无法鉴权
- ✅ 私钥丢失 = 直接作废,必须重新生成新密钥对
- 丢失后标准处理流程
- 本地重新生成一对新密钥
- 新公钥上传对应 GitHub 账号
- 删除 GitHub 后台旧的失效密钥(安全防泄露)
六、日常密钥管理规范(必遵守) - 查看本地所有密钥
ls ~/.ssh - 密钥权限标准(出错修复)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub - 强制备份(最重要)
配置完成后立即备份整个 .ssh 文件夹,防止重装系统丢失:
cp -r ~/.ssh ~/Desktop/ssh-backup-$(date +%Y%m%d) - 安全运维规则
- 一台设备对应一个独立密钥,不共用、不混用
- 更换设备/弃用设备,立即在 GitHub 删除对应密钥
- 私钥禁止上传网络、禁止分享、禁止存代码仓库
- 多账号必须通过 config 区分 Host,避免权限混乱
七、常见报错速查 - zsh: no such file or directory:未生成对应密钥文件,重新执行 ssh-keygen
- Permission denied:公钥未上传、密钥不匹配、config 配置错误
- Host authenticity prompt:正常安全校验,输入 yes 回车即可
- Password authentication not supported:禁用 HTTPS 密码,改用 SSH 密钥
八、文档总结(极简口诀)
公钥传云端,私钥存本地;
单账号默认名,多账号自定义;
私钥丢不可逆,备份必须勤;
多号配 Host,切换无冲突。