1. 检查是否已有 SSH 密钥
打开终端,检查是否已经存在 SSH 密钥对:
ls ~/.ssh
如果你看到类似 id_rsa
和 id_rsa.pub
的文件,说明你已经有 SSH 密钥。否则,继续下一步。
2. 生成 SSH 密钥
如果你没有 SSH 密钥,使用以下命令生成一个新的密钥对:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
其中,将 "your_email@example.com"
替换为你在 GitHub 上注册的电子邮件地址。
-
文件保存位置:按提示按
Enter
键,选择默认保存路径(~/.ssh/id_rsa
)。 -
设置密码:你可以选择设置一个密码来保护密钥,或者直接按
Enter
跳过。
3. 添加 SSH 密钥到 SSH agent
接下来,确保 SSH agent 正在运行并将密钥添加到 agent 中:
eval "$(ssh-agent -s)"
然后,使用以下命令将 SSH 私钥添加到 agent:
ssh-add ~/.ssh/id_rsa
4. 将公钥添加到 GitHub
-
打开公钥文件并复制其内容:
cat ~/.ssh/id_rsa.pub
-
登录到 GitHub。
-
点击右上角的头像,选择 Settings。
-
在左侧菜单中选择 SSH and GPG keys。
-
点击 New SSH key。
-
在 Title 字段中输入一个标识性名称(例如:"My Laptop"),将步骤 3 中复制的公钥粘贴到 Key 字段。
-
点击 Add SSH key。
5. 测试 SSH 连接
确认 SSH 配置是否正确,运行以下命令:
ssh -T git@github.com
如果配置成功,输出会类似于:
Hi <your-username>! You've successfully authenticated, but GitHub does not provide shell access.
6. 设置 Git 远程仓库使用 SSH
如果你的 Git 仓库当前使用 HTTPS,可以将其切换为 SSH:
-
检查当前远程仓库的 URL:
git remote -v
输出可能是:
origin https:*****.git (fetch) origin https:*****.git (push)
-
将远程仓库的 URL 更改为 SSH:
git remote set-url origin ****.git
-
再次推送代码:
git push origin main
7. 故障排除
-
检查防火墙或代理:某些网络环境可能会阻止 SSH 连接。确保没有防火墙或代理干扰 SSH 连接。
-
查看日志信息:如果问题仍然存在,使用以下命令获取详细日志:
GIT_SSH_COMMAND="ssh -v" git push origin main
额外提示
-
更新 GitHub 密钥:如果你更换了设备或更改了 SSH 密钥,记得在 GitHub 的 SSH and GPG keys 部分更新或删除旧的公钥。
-
使用多个密钥:如果你在多个设备或项目中使用不同的 SSH 密钥,可以为每个密钥配置不同的 Title,并确保 SSH agent 正确加载所需的密钥。