Git SSH 配置:从生成密钥到远程连接

前言

每次推送代码都要输入用户名和密码,既繁琐又不安全。这篇就来聊聊如何通过 SSH 协议实现免密安全访问远程仓库。

为什么选择 SSH 协议?

Git 支持多种数据传输协议,主要包括:

  • 本地协议(Local) :适用于本机或局域网内的仓库操作
  • HTTPS 协议:最通用,但每次操作需输入凭证
  • SSH(Secure Shell)协议:基于密钥对验证,免密且安全
  • Git 协议:仅支持读取,不常用

划重点: SSH 通过加密通道实现远程仓库的安全访问,采用基于密钥对的验证机制,无需频繁输入用户名和密码,特别适合高频的仓库操作场景。

前提条件 :SSH 协议依赖密钥验证方式,因此需要预先创建一对密钥(公钥与私钥) ,并将公钥部署至目标服务器。

配置 SSH 协议

生成公钥和私钥

在任意目录下,右键打开 Git Bash 终端,执行以下命令生成密钥对:

bash 复制代码
ssh-keygen
# 或指定算法和注释
ssh-keygen -t rsa -C '843766158@qq.com'

代码解析:

  1. ssh-keygen:Git 自带的密钥生成工具,默认生成 RSA 密钥对
  2. -t rsa :指定算法为 RSA,-C 后跟注释(通常是邮箱)

生成过程中,系统会提示设置文件保存路径及密码;若无需额外保护,可直接按回车采用默认配置(即不设置密码)。

密钥生成后,可在 C:\Users\<用户名>\.ssh 目录下找到以下文件:

  • id_rsa私钥(务必妥善保管,切勿外泄)
  • id_rsa.pub公钥(可安全上传至代码托管平台)

配置 Gitee 与 GitHub

使用记事本打开 id_rsa.pub 公钥文件,复制其中的全部内容,然后将其添加至 Gitee 或 GitHub 的 SSH 公钥管理页面。

Gitee 配置示例:

测试 SSH 连接

执行以下命令,验证本机是否已成功通过 SSH 连接至 Gitee:

bash 复制代码
ssh -T git@gitee.com

同样地,可通过以下命令测试与 GitHub 的连接:

bash 复制代码
ssh -T git@github.com

常见坑:22 端口连接被拒绝

若默认的 22 端口连接被拒绝,可尝试通过以下步骤进行配置调整:

  1. 创建 config 文件 :在 C:\Users\<你的用户名>\.ssh​ 目录下,新建一个名为 config 的文件(注意:无文件后缀名)。

  2. 添加配置内容:使用文本编辑器打开该文件,并添加以下配置:

    bash 复制代码
    Host github.com
        User 843766158@qq.com
        Hostname ssh.github.com
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/id_rsa
        Port 443
  3. 重新测试连接 :保存文件后,重新执行测试命令 ssh -T git@github.com

  4. 确认主机真实性 :首次连接时,系统可能会弹出主机真实性确认提示,输入 yes 并回车即可继续:

bash 复制代码
The authenticity of host '[ssh.github.com]:443 ([192.30.255.123]:443)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[ssh.github.com]:443,[192.30.255.123]:443' (RSA) to the list of known hosts.

复制 SSH 仓库地址

在代码托管平台(如 Gitee、GitHub)上,选择 SSH 克隆方式,复制对应的 SSH 仓库地址,即可用于本地克隆或远程关联。

小结

  • SSH 协议 通过密钥对实现免密安全访问,核心机制是公钥加密 + 私钥解密
  • 密钥生成 只需一条 ssh-keygen 命令,私钥务必妥善保管
  • 连接测试 使用 ssh -T 命令验证,22 端口被拒时可改用 443 端口

总结

随着 Git 在开发流程中的普及,SSH 协议已成为远程仓库操作的标准配置。本文演示了如何从零配置 SSH 协议,实现免密安全访问 Gitee 和 GitHub。

本质上就是一对密钥 配合平台公钥配置,构建出安全的免密连接通道。SSH 配置并不复杂,业界主流代码托管平台均基于此原理。

相关推荐
怕浪猫20 小时前
FDE 如何正确解决现场项目工程性的问题
前端·后端·ai编程
IT从业者张某某20 小时前
【鸿蒙PC命令行适配】GitUI 移植的工程实践:双 Git 引擎(libgit2/gitoxide)的鸿蒙适配之路
git·华为·harmonyos
GreenTea20 小时前
vLLM 与 SGLang KV Cache 底层实现机制深度调研报告
前端·后端·算法
考虑考虑21 小时前
Java实现hmacsha256加密算法
java·后端·java ee
凤山老林21 小时前
聊聊企业级 API 安全:Spring Boot 落地 OAuth 2.1、mTLS 与接口签名防篡改
spring boot·后端·安全·oauth
林鹿1 天前
maven属性与groovy变量对照表
后端
烽火戏诸诸诸侯1 天前
AI 让我的独门小工具焕发第二春
后端·ai编程·vibecoding
狼爷1 天前
硅谷爆火的FDE是AI新风口,还是高级外包?
后端·全栈
xinjia_ctrl1 天前
暑假实习总结
git·后端·spring·maven·intellij-idea
IT_陈寒1 天前
Java Stream处理大集合,我的内存怎么就炸了
前端·人工智能·后端