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 配置并不复杂,业界主流代码托管平台均基于此原理。

相关推荐
IT_陈寒1 小时前
Python多进程池的坑:子进程竟然不会退出
前端·人工智能·后端
叫我:松哥2 小时前
基于flask图书管理系统,技术栈flask+layui+sqlite+Echarts
后端·python·数据分析·flask·echarts·layui
铁皮饭盒2 小时前
网页端, 5.5mb谷歌模型, 识别躯干, 视频都不卡
前端·javascript·后端
WongKyunban2 小时前
Go语言的简洁并发编程
开发语言·后端·golang
mldong2 小时前
一条命令,十分钟:jeeflow 工作流应用的六语言一键部署
前端·后端·架构
Shawn_Shawn2 小时前
本体论的基本核心概念
后端·llm·领域驱动设计
阿火~10 小时前
Git 项目配置与推送完整指南
git
凤山老林12 小时前
Spring Boot 3.x AOT 编译实战:从原理、踩坑到生产落地
java·spring boot·后端
博傅12 小时前
Spring 核心原理
java·后端·spring