Git SSH 公钥配置指南
在使用 Git 与远程代码托管平台(如 GitHub、GitLab、Gitee)交互时,SSH 公钥认证是一种比 HTTPS 更安全、更便捷的身份验证方式。配置完成后,你无需每次输入用户名和密码即可推送或拉取代码。
本文将带你完成 SSH 公钥的生成、配置与验证全过程,适用于 Windows(含 WSL)、macOS 和 Linux 系统。
一、为什么使用 SSH 而不是 HTTPS?
| 对比项 | HTTPS | SSH |
|---|
介绍 Git 使用 SSH 公钥认证的配置流程。内容包括对比 SSH 与 HTTPS 的优势,生成 Ed25519 密钥,配置 ssh-agent,将公钥添加至 GitHub/GitLab/Gitee 等平台,测试连接及修改远程仓库地址。同时提供常见问题排查与安全建议,帮助开发者实现安全免密的代码推送与拉取。
在使用 Git 与远程代码托管平台(如 GitHub、GitLab、Gitee)交互时,SSH 公钥认证是一种比 HTTPS 更安全、更便捷的身份验证方式。配置完成后,你无需每次输入用户名和密码即可推送或拉取代码。
本文将带你完成 SSH 公钥的生成、配置与验证全过程,适用于 Windows(含 WSL)、macOS 和 Linux 系统。
| 对比项 | HTTPS | SSH |
|---|
| 认证方式 | 用户名 + 密码 / Token | 公私钥对(无需每次输入) |
| 安全性 | 中等(密码可能泄露) | 高(密钥加密,无明文传输) |
| 使用便捷性 | 每次操作需输入凭证(除非缓存) | 配置一次,永久免密 |
| 企业/自动化场景 | 不友好 | 极佳(CI/CD、脚本自动化常用) |
推荐:日常开发优先使用 SSH 方式!
首先,查看本地是否已存在 SSH 密钥:
ls -al ~/.ssh
如果看到如下文件之一,说明已有密钥:
id_rsa 和 id_rsa.pub(RSA 算法)id_ed25519 和 id_ed25519.pub(Ed25519 算法,更安全、更快,推荐使用)id_ecdsa 等注意:
.pub是公钥(可公开),另一个是私钥(绝对不可泄露!)
如果你已有密钥且仍在使用,可跳过生成步骤,直接使用现有公钥。
ssh-keygen -t ed25519 -C "[email protected]"
-t ed25519:指定使用 Ed25519 加密算法(现代、安全、高效)-C "[email protected]":添加注释(通常是你的邮箱,仅作标识用)如果系统不支持 Ed25519(较老版本 OpenSSH),可改用其他算法。
系统会提示:
Enter file in which to save the key (/home/you/.ssh/id_ed25519):
直接按 回车 使用默认路径。
Enter passphrase (empty for no passphrase):
MySshKey2026!),可防止私钥被盗后滥用。ssh-agent 缓存。生成成功后,你会看到类似输出:
Your identification has been saved in /home/you/.ssh/id_ed25519
Your public key has been saved in /home/you/.ssh/id_ed25519.pub
The key fingerprint is: SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxx [email protected]
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
如果你设置了 Passphrase,此时会要求输入一次。之后在当前会话中无需再输。
Windows 用户(Git Bash):上述命令同样适用。
WSL 用户:建议在 WSL 中配置,而非 Windows 原生。
cat ~/.ssh/id_ed25519.pub
或者直接复制到剪贴板(macOS/Linux):
# macOS pbcopy < ~/.ssh/id_ed25519.pub
# Linux (需安装 xclip) xclip -sel clip < ~/.ssh/id_ed25519.pub
务必复制
.pub文件内容,不要复制私钥!
公钥格式示例:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG... [email protected]
My MacBook Pro)其他平台类似:GitLab:Preferences → SSH Keys;Gitee(码云):设置 → SSH 公钥;Bitbucket:Personal settings → SSH keys
ssh -T [email protected]
成功响应:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
ssh -T [email protected]
ssh -T [email protected]
出现欢迎信息即表示配置成功!
如果你之前使用 HTTPS 克隆仓库,需修改远程 URL:
# 查看当前远程地址
git remote -v
# 修改为 SSH 地址
git remote set-url origin [email protected]:username/repo.git
SSH 地址格式通常为:
[email protected]:用户名/仓库名.git
你可以在仓库页面点击 Code → SSH 获取正确地址。
ssh-add -l 能看到你的密钥.pub 内容(无换行、无多余空格)ssh -vT [email protected] 查看详细错误日志解决:
ssh-add ~/.ssh/id_ed25519
git@ 开头)通过以上步骤,你已成功配置 SSH 公钥,实现 安全、免密、高效的 Git 操作体验。无论是个人项目还是团队协作,SSH 都是专业开发者的首选。
记住:
.ssh目录权限应为700,私钥文件权限应为600,否则 SSH 可能拒绝使用:

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online