跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

GitHub 自定义 SSH Key 配置与验证指南

在 Linux、macOS 和 Windows 环境下为 GitHub 配置自定义命名 SSH 密钥的完整流程。主要步骤包括使用 ssh-keygen 生成非默认名称的密钥对,将公钥添加至 GitHub 账号设置,编辑本地 ~/.ssh/config 文件指定私钥路径并设置权限,最后通过 ssh -T 命令验证连接是否成功。该方案有效避免了多服务密钥冲突,实现了无需输入密码即可访问 GitHub 仓库的目标。

深海蔚蓝发布于 2026/3/30更新于 2026/10/25110 浏览
GitHub 自定义 SSH Key 配置与验证指南

GitHub 自定义 SSH 配置教程

本文介绍如何在 Linux、macOS 和 Windows 环境下为 GitHub 配置自定义命名的 SSH 密钥,实现免密码访问。适配所有系统(Linux/macOS/Windows Git Bash)。


核心思路

  1. 生成自定义名称的 SSH 密钥对(避免与其他服务的 Key 冲突);
  2. 将公钥添加到 GitHub 账号的 SSH 配置中;
  3. 配置本地 SSH 配置文件,让 Git 知道「访问 GitHub 时使用哪个自定义 Key」;
  4. 验证 SSH 连接是否成功。

步骤 1:生成自定义名称的 SSH Key

1.1 打开终端/命令行
  • Linux/macOS:打开 Terminal;
  • Windows:打开 Git Bash(推荐)或 WSL。
1.2 执行生成命令(自定义文件名)

使用 ssh-keygen 命令,通过 -f 参数指定密钥文件名(核心:自定义名称),优先推荐 ED25519 算法(更安全、体积小),兼容旧系统可使用 RSA。

方案 1:推荐 ED25519 算法(自定义文件名:github_id_ed25519)
# -t:指定加密算法
# -f:指定密钥文件路径 + 名称(~/.ssh/ 是默认 SSH 目录,后面跟自定义文件名)
# -C:添加注释(建议填写 GitHub 绑定的邮箱,方便识别)
ssh-keygen -t ed25519 -f ~/.ssh/github_id_ed25519 -C "your_github_email@xxx.com"
方案 2:兼容旧系统 RSA 算法(自定义文件名:github_id_rsa)
# -b 4096:指定密钥长度(更安全)
ssh-keygen -t rsa -b 4096 -f ~/.ssh/github_id_rsa -C "your_github_email@xxx.com"
1.3 执行后操作(全程回车即可)

执行命令后,会出现 3 次提示,全部回车默认即可(无需设置密钥密码,设置则登录时需额外输入密钥密码):

  1. Enter passphrase (empty for no passphrase):输入密钥密码(回车跳过,无密码);
  2. Enter same passphrase again:再次确认密钥密码(回车跳过);
  3. 最终会生成 2 个文件(自定义名称对应),以 github_id_ed25519 为例:
    • ~/.ssh/github_id_ed25519:私钥(核心,严格保管,不可公开泄露);
    • ~/.ssh/github_id_ed25519.pub:公钥(需上传到 GitHub,可公开)。
1.4 验证密钥文件是否生成成功
# 查看 ~/.ssh 目录下的文件
ls -l ~/.ssh/

若能看到 github_id_ed25519 和 github_id_ed25519.pub(或自定义的其他名称),说明生成成功。


步骤 2:将公钥添加到 GitHub 账号

2.1 读取公钥内容并复制

首先读取自定义公钥的内容,完整复制(包括末尾的注释,不可遗漏、不可多空格):

# 以自定义文件 github_id_ed25519.pub 为例,替换为你的公钥文件名
cat ~/.ssh/github_id_ed25519.pub

执行后,终端会输出一串以 ssh-ed25519(或 ssh-rsa)开头的字符串,完整复制这串内容(可直接选中复制,或重定向到文件后复制)。

2.2 登录 GitHub 并添加公钥
  1. 打开 GitHub 官网(https://github.com),登录你的账号;
  2. 点击右上角的「头像」→ 选择「Settings」(设置);
  3. 在左侧导航栏中,找到并点击「SSH and GPG keys」(SSH 和 GPG 密钥);
  4. 点击右上角的「New SSH key」(新建 SSH 密钥);
  5. 填写表单内容:
    • Title:标题(自定义,方便识别,如「My MacBook Pro」「Work Linux」);
    • Key type:选择「Authentication key」(认证密钥,默认);
    • Key:粘贴第一步复制的完整公钥内容(确保无换行、无多余空格);
  6. 点击「Add SSH key」(添加 SSH 密钥),若弹出账号密码/二次验证,按提示完成验证即可。

步骤 3:本地配置 SSH 配置文件(关键:指定 GitHub 对应自定义 Key)

由于我们使用了非默认名称的 SSH Key,需要配置本地 ~/.ssh/config 文件,告诉 SSH「访问 GitHub 时,使用哪个自定义私钥」,否则 Git 会默认使用 id_ed25519/id_rsa,导致认证失败。

3.1 创建/编辑 SSH 配置文件
# 编辑 ~/.ssh/config 文件(无则自动创建)
vim ~/.ssh/config
3.2 写入 GitHub 对应的配置内容

粘贴以下内容(根据你的密钥文件名修改 IdentityFile 路径):

# 配置 GitHub 专属 SSH 规则(Host 可自定义,这里用 github.com 保持默认)
Host github.com
    HostName github.com
    User git # 固定值,不可修改(GitHub SSH 登录用户必须是 git)
    IdentityFile ~/.ssh/github_id_ed25519 # 核心:指向你的自定义私钥文件路径
    PreferredAuthentications publickey # 优先使用公钥认证
    IdentitiesOnly yes # 强制使用指定的私钥,避免加载其他密钥导致冲突
  • 若你的自定义密钥是 RSA 算法(github_id_rsa),只需将 IdentityFile 改为 ~/.ssh/github_id_rsa 即可;
  • 保存并退出(vim 中按 Esc,输入 :wq 回车)。
3.3 设置配置文件权限(必须为 600,否则 SSH 会忽略该配置)

SSH 对 config 文件权限有严格要求,非 600 会导致配置失效,执行以下命令修复权限:

chmod 600 ~/.ssh/config

同时,确保私钥文件权限为 600(避免认证失败):

# 以 github_id_ed25519 为例,替换为你的私钥文件名
chmod 600 ~/.ssh/github_id_ed25519

步骤 4:验证 SSH 连接 GitHub 是否成功

4.1 执行 SSH 验证命令
# 连接 GitHub SSH 服务器,验证配置是否生效
ssh -T git@github.com
4.2 处理首次连接提示

首次连接时,会出现「主机密钥验证」提示,输入 yes 回车即可:

The authenticity of host 'github.com (140.82.112.4)' can't be established. ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
4.3 验证成功标志

若终端输出以下内容(包含你的 GitHub 用户名),说明配置成功,已实现访问:

Hi your-github-username! You've successfully authenticated, but GitHub does not provide shell access.

步骤 5:(可选)测试 Git 操作(克隆/提交)

配置成功后,使用 SSH 地址克隆 GitHub 仓库,即可实现提交/推送代码:

# 示例:克隆一个测试仓库(替换为你的仓库 SSH 地址)
git clone [email protected]:your-github-username/your-repo-name.git
  • 仓库的 SSH 地址可在 GitHub 仓库页面的「Code」→「SSH」中获取;
  • 克隆后,修改仓库内容并执行 git push,无需输入账号密码,直接推送成功。

常见问题排查

  1. 验证失败:Permission denied (publickey)
    • 检查 ~/.ssh/config 中的 IdentityFile 路径是否正确(是否指向自定义私钥);
    • 检查私钥/config 文件权限是否为 600(权限过宽会导致 SSH 拒绝使用);
    • 检查 GitHub 上添加的公钥是否与本地公钥内容完全一致(无换行、无多余空格);
    • 重新执行 ssh -T [email protected] -v(-v 显示调试信息),查看具体认证失败原因。
  2. 自定义 Key 与其他服务 Key 冲突
    • 该配置方法已通过 IdentitiesOnly yes 避免冲突,若仍有问题,可给不同服务配置不同的 Host 别名(如 GitHub 配置 Host github,克隆时用 git@github:username/repo.git)。
  3. Windows 系统公钥复制失败
    • 打开 C:\Users\你的 Windows 用户名.ssh\ 目录,直接用记事本打开公钥文件(github_id_ed25519.pub),复制完整内容即可。

总结

  1. 自定义 Key 核心:生成时用 ssh-keygen -f 自定义文件名 指定名称,避免与其他服务 Key 冲突;
  2. 关键配置:必须编辑 ~/.ssh/config,指定 GitHub 对应的私钥路径,且文件权限为 600;
  3. 验证步骤:通过 ssh -T [email protected] 验证,出现用户名提示即为成功;
  4. Git 操作:使用仓库的 SSH 地址进行克隆/推送,实现操作,无需使用 HTTPS 地址。

配置完成后,你的自定义 SSH Key 会长期生效,后续访问 GitHub 无需重复输入账号密码,且自定义名称的 Key 便于管理多个服务(如 GitHub、GitLab 各用一个 Key)。

目录

  1. GitHub 自定义 SSH 配置教程
  2. 核心思路
  3. 步骤 1:生成自定义名称的 SSH Key
  4. 1.1 打开终端/命令行
  5. 1.2 执行生成命令(自定义文件名)
  6. 方案 1:推荐 ED25519 算法(自定义文件名:githubided25519)
  7. -t:指定加密算法
  8. -f:指定密钥文件路径 + 名称(~/.ssh/ 是默认 SSH 目录,后面跟自定义文件名)
  9. -C:添加注释(建议填写 GitHub 绑定的邮箱,方便识别)
  10. 方案 2:兼容旧系统 RSA 算法(自定义文件名:githubidrsa)
  11. -b 4096:指定密钥长度(更安全)
  12. 1.3 执行后操作(全程回车即可)
  13. 1.4 验证密钥文件是否生成成功
  14. 查看 ~/.ssh 目录下的文件
  15. 步骤 2:将公钥添加到 GitHub 账号
  16. 2.1 读取公钥内容并复制
  17. 以自定义文件 githubided25519.pub 为例,替换为你的公钥文件名
  18. 2.2 登录 GitHub 并添加公钥
  19. 步骤 3:本地配置 SSH 配置文件(关键:指定 GitHub 对应自定义 Key)
  20. 3.1 创建/编辑 SSH 配置文件
  21. 编辑 ~/.ssh/config 文件(无则自动创建)
  22. 3.2 写入 GitHub 对应的配置内容
  23. 配置 GitHub 专属 SSH 规则(Host 可自定义,这里用 github.com 保持默认)
  24. 3.3 设置配置文件权限(必须为 600,否则 SSH 会忽略该配置)
  25. 以 githubided25519 为例,替换为你的私钥文件名
  26. 步骤 4:验证 SSH 连接 GitHub 是否成功
  27. 4.1 执行 SSH 验证命令
  28. 连接 GitHub SSH 服务器,验证配置是否生效
  29. 4.2 处理首次连接提示
  30. 4.3 验证成功标志
  31. 步骤 5:(可选)测试 Git 操作(克隆/提交)
  32. 示例:克隆一个测试仓库(替换为你的仓库 SSH 地址)
  33. 常见问题排查
  34. 总结

更多推荐文章

查看全部
  • Docker 部署私人 AI 电脑助手 Moltbot
  • Spring Boot Web 三大核心交互实战:表单、AJAX 与 JSON
  • 现代 C++ 新特性 constexpr:从 C++11 到 C++20 的演进
  • Python 异步编程与协程实战指南
  • Linux Shell 命令与语法底层执行逻辑
  • Python 生成 12 位随机密码示例
  • ComfyUI v0.18.0 发布:显存内存优化、VAE 架构进化、API 节点与前端升级
  • GitHub 学生认证与 PyCharm Copilot 配置全流程指南
  • CMake 核心概念与实战:目标、属性、API 及静态库构建
  • 即答侠 InterviewAssistant 技术解析:AI 面试辅助与简历优化实战
  • 高空长航时无人机热管理系统中抗辐照 MCU 的可靠性研究
  • 统信 UOS V2500 服务器 OpenClaw AI Agent 安装部署指南
  • Unity VR 高分辨率全景视频播放性能优化
  • Git 原理与使用
  • FPGA 开发环境搭建:Quartus II 13.1 与 ModelSim 安装配置指南
  • ERNIE-4.5-0.3B 轻量模型部署指南与实战测评
  • OpenHarmony与华为云IoT智能家居开发指南
  • 使用 AI 视觉编程模型优化 Unity 编辑器插件:从功能实现到界面美化
  • Spring Boot 集成 Spring AI OpenAI Starter 教程
  • WebPShop 插件:Photoshop 支持 WebP 格式的解决方案

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online