GitHub SSH配置教程

GitHub SSH 配置教程

你想知道 GitHub 如何配置 SSH Key,并且希望自定义 SSH Key 的文件名 (不使用默认的 id_rsa/id_ed25519),同时实现通过该 Key访问 GitHub,我会给你完整步骤(含自定义命名、配置、验证),适配所有系统(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
Bash 复制代码
# -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
Bas 复制代码
# -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 验证密钥文件是否生成成功

Bash 复制代码
# 查看 ~/.ssh 目录下的文件
ls -l ~/.ssh/

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


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

2.1 读取公钥内容并复制

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

Bash 复制代码
# 以自定义文件 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 配置文件

Bash 复制代码
# 编辑 ~/.ssh/config 文件(无则自动创建)
vim ~/.ssh/config

3.2 写入 GitHub 对应的配置内容

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

TOML 复制代码
# 配置 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 会导致配置失效,执行以下命令修复权限:

Bash 复制代码
chmod 600 ~/.ssh/config

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

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

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

4.1 执行 SSH 验证命令

Bash 复制代码
# 连接 GitHub SSH 服务器,验证配置是否生效
ssh -T git@github.com

4.2 处理首次连接提示

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

Plain 复制代码
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 用户名),说明配置成功,已实现访问:

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

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

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

Bash 复制代码
# 示例:克隆一个测试仓库(替换为你的仓库 SSH 地址)
git clone git@github.com: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 git@github.com -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 git@github.com 验证,出现用户名提示即为成功;

  4. Git 操作:使用仓库的 SSH 地址进行克隆/推送,实现操作,无需使用 HTTPS 地址。

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

相关推荐
等什么君!2 小时前
Docker 数据卷:MySQL 数据同步实战
运维·docker·容器
礼拜天没时间.2 小时前
《Docker实战入门与部署指南:从核心概念到网络与数据管理》:环境准备与Docker安装
运维·网络·docker·容器·centos
每天瞎忙的农民工2 小时前
Ubuntu 24 安装npm22
linux·运维·ubuntu·npm
j_xxx404_2 小时前
Linux:进程控制(创建/终止/等待/获取退出信息/多进程)
linux·运维·服务器
牛十二2 小时前
在github codespaces部署开源个人智能体OpenClaw(Clawdbot/Moltbot)使用教程
github
CoderJia程序员甲3 小时前
GitHub 热榜项目 - 日榜(2026-02-01)
人工智能·ai·大模型·github·ai教程
散峰而望3 小时前
【基础算法】穷举的艺术:在可能性森林中寻找答案
开发语言·数据结构·c++·算法·随机森林·github·动态规划
散峰而望3 小时前
【基础算法】算法的“预谋”:前缀和如何改变游戏规则
开发语言·数据结构·c++·算法·github·动态规划·推荐算法
BUG_MeDe3 小时前
LINUX MTU/MSS(1500 1460等)的一些理解
linux·运维·服务器