Git 配置 SSH Key 免密登录
什么是 SSH Key?
SSH(Secure Shell)密钥是一种加密的网络协议,用于在不安全的网络上安全地进行远程操作。SSH Key 由一对密钥组成:
私钥 (Private Key):存储在本地计算机上,必须严格保密
公钥 (Public Key):可公开分享,需要上传到 Git 服务商(GitHub、GitLab 等)
检查现有 SSH 密钥
在生成新密钥之前,先检查是否已存在 SSH 密钥:
bash
# 查看 ~/.ssh 目录下的现有密钥
ls -al ~/.ssh常见的密钥文件包括:
id_rsa和id_rsa.pub(RSA 算法)id_ed25519和id_ed25519.pub(EdDSA 算法)
生成新的 SSH 密钥
方法一:使用 RSA 算法(兼容性更好)
bash
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"方法二:使用 Ed25519 算法(更安全、更快速)
bash
ssh-keygen -t ed25519 -C "your_email@example.com"执行命令后,系统会提示:
输入保存路径(直接回车使用默认位置)
设置密码短语(可选,为密钥添加额外保护)
将 SSH 密钥添加到 SSH 代理
启动 SSH 代理
bash
# 启动 ssh-agent
eval "$(ssh-agent -s)"
# 将 SSH 私钥添加到代理
ssh-add ~/.ssh/id_rsa自动启动 SSH 代理(可选配置)
将以下内容添加到 ~/.bashrc 或 ~/.zshrc:
bash
# 自动启动 ssh-agent 并添加密钥
if [ -z "$SSH_AUTH_SOCK" ]; then
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa 2>/dev/null
fi将公钥添加到 Git 服务商
复制公钥内容
bash
# 显示并复制公钥内容
cat ~/.ssh/id_rsa.pub
# 或者使用复制命令(macOS)
pbcopy < ~/.ssh/id_rsa.pub添加到 GitHub
登录 GitHub,点击右上角头像 → Settings
左侧菜单选择 SSH and GPG keys
点击 New SSH key
填写标题,粘贴公钥内容
点击 Add SSH key
测试 SSH 连接
验证配置是否成功:
bash
ssh -T git@github.com成功时会显示:Hi username! You've successfully authenticated...
🚀 Push 测试实战
下面我们通过一个完整的实战流程来测试 SSH Key 是否配置成功。
步骤 1:创建测试仓库
bash
# 创建测试目录
mkdir ssh-key-test
cd ssh-key-test
# 初始化 Git 仓库
git init
# 创建测试文件
echo "# SSH Key 测试仓库" > README.md
echo "这是一个测试 SSH Key 免密登录的仓库" >> README.md步骤 2:配置 Git 用户信息
bash
# 设置用户名和邮箱(如果尚未设置)
git config user.name "您的用户名"
git config user.email "您的邮箱@example.com"步骤 3:提交代码
bash
# 添加文件到暂存区
git add .
# 提交更改
git commit -m "测试 SSH Key 免密登录"步骤 4:添加远程仓库
首先在 GitHub 上创建一个新仓库,然后:
bash
# 添加远程仓库(替换为您的实际仓库地址)
git remote add origin git@github.com:您的用户名/您的仓库名.git步骤 5:执行 Push 测试!
bash
# 推送到远程仓库
git push -u origin main预期的成功结果:
如果 SSH Key 配置成功,您将看到:
text
✅ 没有弹出密码输入提示
✅ 直接开始上传文件
✅ 显示类似下面的成功信息:
Counting objects: 3, done.
Writing objects: 100% (3/3), 256 bytes | 256.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:您的用户名/您的仓库名.git
* [new branch] main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.如果 Push 失败,排查步骤:
bash
# 1. 测试 SSH 连接
ssh -T git@github.com
# 2. 检查远程地址是否正确
git remote -v
# 3. 验证 SSH 密钥是否加载
ssh-add -l
# 4. 检查密钥权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub测试结果分析
✅ 成功迹象:
无需输入用户名密码
代码快速上传到远程仓库
操作流程顺畅无中断
❌ 失败迹象:
提示权限被拒绝(Permission denied)
要求输入用户名密码
连接超时或失败
总结
通过本次 push 测试,您可以验证 SSH Key 配置是否真正生效。成功的 push 操作证明:
SSH 密钥生成 ✅
公钥上传到 Git 服务商 ✅
SSH 代理配置 ✅
免密登录功能 ✅
恭喜!您现在可以享受顺畅的 Git 免密操作体验了! 🎉
安全提示:记得保护好您的私钥,不要分享给他人,定期更换密钥以保持安全。