本文适用于 Linux / macOS 终端环境,目标是为当前电脑配置 SSH 密钥并用于 GitHub。
虽然 ed25519 更现代、密钥更短,但如果你当前更希望使用兼容性更广、团队更熟悉的方案,RSA 4096 仍是可用且常见的选择。
建议命令:
ssh-keygen -t rsa -b 4096 -C "你的GitHub邮箱"
先查看本机已有密钥文件:
ls -al ~/.ssh
常见文件:
私钥:id_rsa
公钥:id_rsa.pub
如果你已经有并且想复用,可直接跳到“第 5 步:添加公钥到 GitHub”。
执行:
ssh-keygen -t rsa -b 4096 -C "你的GitHub邮箱"
终端会依次提示:
Enter file in which to save the key ...
直接回车:使用默认路径 ~/.ssh/id_rsa
或输入自定义路径(例如 ~/.ssh/id_rsa_github)
Enter passphrase ...
建议设置密码短语(更安全)
若不想设置可直接回车(不推荐)
Enter same passphrase again
再输入一次确认
完成后你会看到 Your identification has been saved in ...。
eval "$(ssh-agent -s)"
如果使用默认路径:
ssh-add ~/.ssh/id_rsa
如果你使用了自定义路径,请替换成对应文件。
ssh-add -l
若看到你的 RSA 指纹,说明已成功。
cat ~/.ssh/id_rsa.pub
复制整行内容(通常以 ssh-rsa 开头)。
打开 GitHub 网页并进入:
Settings -> SSH and GPG keys -> New SSH key
填写:
Title:例如 my-laptop-2026
Key:粘贴刚才复制的完整公钥
点击 Add SSH key 保存。
执行:
ssh -T git@github.com
首次连接可能会提示是否信任主机,输入:
yes
成功时会看到类似:
Hi <your-username>! You've successfully authenticated, but GitHub does not provide shell access.
git remote -v
git remote set-url origin git@github.com:你的用户名/你的仓库.git
git remote -v
确认 origin 显示为 git@github.com:... 即可。
Permission denied (publickey)可按顺序检查:
是否已 ssh-add 私钥
GitHub 是否粘贴了正确公钥(不要粘贴私钥)
当前仓库远程地址是否为 SSH 而非 HTTPS
是否存在多个密钥导致匹配错误
可以在 ~/.ssh/config 中为不同主机别名配置不同密钥,例如:
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
ssh-add这是常见现象。可按你的系统方式配置登录时自动启动 agent 并加载密钥。
私钥(id_rsa)绝对不要上传到任何代码仓库
建议给私钥设置 passphrase
若密钥疑似泄露,立即在 GitHub 删除该公钥并重新生成
定期审查 GitHub 上已添加的 SSH keys
# 1) 查看已有密钥
ls -al ~/.ssh
# 2) 生成 RSA 4096 密钥
ssh-keygen -t rsa -b 4096 -C "你的GitHub邮箱"
# 3) 启动 agent
eval "$(ssh-agent -s)"
# 4) 加载私钥
ssh-add ~/.ssh/id_rsa
# 5) 查看公钥
cat ~/.ssh/id_rsa.pub
# 6) 测试 GitHub 连接
ssh -T git@github.com
# 7) 把仓库改成 SSH 地址
git remote set-url origin git@github.com:你的用户名/你的仓库.git