在日常的 Git 使用中,我们经常需要连接 GitHub、GitLab 等代码托管平台进行 clone
、push
、pull
等操作。默认使用 HTTPS 访问时,每次操作都可能需要输入用户名和密码,尤其在 GitHub 上密码已被废弃,需要使用 Token,既不安全也不方便。
本文将系统介绍 SSH Key 的作用、优势、使用场景及配置方法,帮助你高效、安全地使用 Git。
🔐 什么是 SSH Key?
SSH Key 是一种基于 非对称加密 的认证方式,由一对密钥组成:
公钥(public key):可公开,添加到服务器或平台(如 GitHub)
私钥(private key):保存在本地,不能泄露,用来证明你的身份
SSH Key 是 SSH 协议下的核心认证机制,可用于远程登录服务器、Git 操作等。
🧠 为什么使用 SSH Key?
🛠️ SSH Key 的生成与配置
1. 生成 SSH Key
ssh-keygen -t ed25519 -C "your_email@example.com"
-t ed25519
:使用 Ed25519 算法,现代、安全、效率高-C
:添加注释(通常用邮箱,方便识别)然后会提示输入保存路径和密码(passphrase),可按需输入或直接回车跳过
2. 查看公钥并复制
cat ~/.ssh/id_ed25519.pub
复制整行内容,准备添加到平台。
3. 添加公钥到 GitHub / GitLab
点击 "New SSH key",粘贴刚复制的公钥,保存即可。
✅ 测试是否配置成功
ssh -T git@github.com
第一次连接会询问是否信任,输入 yes
后,看到如下提示表示成功:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
🌐 使用 SSH 协议访问仓库
默认 git clone
通常是 HTTPS 格式,例如:
git clone https://github.com/yourname/yourrepo.git
此时仍会要求用户名 + Token。
改为 SSH 格式即可使用密钥认证:
git clone git@github.com:yourname/yourrepo.git
如果已经克隆了项目,可使用以下命令修改远程地址:
git remote set-url origin git@github.com:yourname/yourrepo.git
🧩 进阶:多个账号的 SSH 配置(可选)
如果你有多个 GitHub/GitLab 账号,可以在 ~/.ssh/config
中添加如下配置:
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
然后使用自定义 Host 进行操作:
git clone git@github-work:yourname/yourrepo.git
🔐 关于密钥密码(passphrase)
生成密钥时可以选择设置一个密码,进一步保护私钥的安全性。
优点:即使私钥被窃取,别人也无法使用
缺点:每次使用都要输入密码
可使用
ssh-agent
缓存私钥,避免重复输入:
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519
📌 总结
SSH Key 是现代开发流程中必不可少的认证方式,具备以下优点:
✅ 安全:非对称加密,防止泄露
✅ 高效:免输密码,适合自动化
✅ 灵活:支持多账号和平台
建议你在所有代码托管平台上统一使用 SSH Key,并管理好本地私钥的权限。
如果你还没有使用 SSH Key,是时候切换了!
如需配置脚本或 .ssh/config
示例,也欢迎随时留言交流。