SSH 免密 Git 完整链路
生成密钥
↓
上传公钥到 Git 服务器(GitHub/GitLab/Gitee)
↓
本地发起 git clone/git push
↓
自动触发 SSH 认证
↓
私钥签名 ←→ 公钥验签
↓
验签成功
↓
执行 Git 操作(拉取/提交/推送)
SSH 公钥认证 标准核心流程
┌───────────────┐ ┌───────────────┐
│ Client │ │ Server │
└───────┬───────┘ └───────┬───────┘
│ │
│ 1. 发起 SSH 连接 │
│─────────────────────────>│
│ │
│ 2. 协商版本、加密算法 │
│<────────────────────────>│
│ │
│ 3. 客户端声明:用公钥认证 │
│─────────────────────────>│
│ │
│ 4. 服务端检查:你的公钥 │
│ 是否在 authorized_keys │
│<─────────────────────────│
│ │
│ 5. 服务端发一个随机串 │
│ (256bit 挑战值) │
│<─────────────────────────│
│ │
│ 6. 客户端用【私钥】对 │
│ 挑战串做数字签名 │
│ │
│ 7. 签名结果发回服务端 │
│─────────────────────────>│
│ │
│ 8. 服务端用你的【公钥】 │
│ 验证签名是否合法 │
│ │
│ 9. 验证通过 → 信任客户端 │
│<─────────────────────────│
│ │
│ 10. 建立加密会话通道 │
│ 在此通道跑 Git 命令 │
│<========================>│
SSH的配置
-
gitee官网 ->登录
-
个人主页 ->个人设置
-
SSH公钥 ->怎样生成公钥
-
复制公钥添加至服务器
生成密钥
# 生成
ssh-keygen -t ed25519 -C "Gitee SSH Key"
# 输出公钥 用户目录下
cat ~/.ssh/id_ed25519.pub
macos
生成密钥
# 生成 SSH 密钥(公钥 + 私钥)
ssh-keygen -t ed25519 -C "你的Gitee绑定邮箱" -f ~/.ssh/id_ed25519_gitee
# 查看并复制公钥
cat ~/.ssh/id_ed25519_gitee.pub
配置 SSH 配置文件
open ~/.ssh/config
# 没有就新建
touch ~/.ssh/config
# 粘贴以下内容
Host gitee
HostName gitee.com
User git
IdentityFile ~/.ssh/id_ed25519_gitee
PreferredAuthentications publickey
# 测试是否连通
ssh -T gitee
# 出现以下提示,表示连接成功
# Hi 用户名! You've successfully authenticated, but GITEE.COM does not provide shell access.
# 克隆项目
git clone git@gitee:用户名/项目名.git