设置SSH公钥实现Git免密登录

5 阅读1分钟

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