GitHub SSH 配置教程
你想知道 GitHub 如何配置 SSH Key,并且希望自定义 SSH Key 的文件名 (不使用默认的 id_rsa/id_ed25519),同时实现通过该 Key访问 GitHub,我会给你完整步骤(含自定义命名、配置、验证),适配所有系统(Linux/macOS/Windows Git Bash)。
核心思路
-
生成自定义名称的 SSH 密钥对(避免与其他服务的 Key 冲突);
-
将公钥添加到 GitHub 账号的 SSH 配置中;
-
配置本地 SSH 配置文件,让 Git 知道「访问 GitHub 时使用哪个自定义 Key」;
-
验证 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 次提示,全部回车默认即可(无需设置密钥密码,设置则登录时需额外输入密钥密码):
-
Enter passphrase (empty for no passphrase):输入密钥密码(回车跳过,无密码); -
Enter same passphrase again:再次确认密钥密码(回车跳过); -
最终会生成 2 个文件(自定义名称对应),以
github_id_ed25519为例:-
~/.ssh/github_id_ed25519:私钥(核心,严格保管,不可公开泄露); -
~/.ssh/github_id_ed25519.pub:公钥(需上传到 GitHub,可公开)。
-
1.4 验证密钥文件是否生成成功
Bash
# 查看 ~/.ssh 目录下的文件
ls -l ~/.ssh/
若能看到 github_id_ed25519 和 github_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 并添加公钥
-
打开 GitHub 官网(https://github.com),登录你的账号;
-
点击右上角的「头像」→ 选择「Settings」(设置);
-
在左侧导航栏中,找到并点击「SSH and GPG keys」(SSH 和 GPG 密钥);
-
点击右上角的「New SSH key」(新建 SSH 密钥);
-
填写表单内容:
-
Title:标题(自定义,方便识别,如「My MacBook Pro」「Work Linux」); -
Key type:选择「Authentication key」(认证密钥,默认); -
Key:粘贴第一步复制的完整公钥内容(确保无换行、无多余空格);
-
-
点击「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,无需输入账号密码,直接推送成功。
常见问题排查
-
验证失败:Permission denied (publickey)
-
检查
~/.ssh/config中的IdentityFile路径是否正确(是否指向自定义私钥); -
检查私钥/
config文件权限是否为 600(权限过宽会导致 SSH 拒绝使用); -
检查 GitHub 上添加的公钥是否与本地公钥内容完全一致(无换行、无多余空格);
-
重新执行
ssh -T git@github.com -v(-v显示调试信息),查看具体认证失败原因。
-
-
自定义 Key 与其他服务 Key 冲突
- 该配置方法已通过
IdentitiesOnly yes避免冲突,若仍有问题,可给不同服务配置不同的Host别名(如 GitHub 配置Host github,克隆时用git@github:username/repo.git)。
- 该配置方法已通过
-
Windows 系统公钥复制失败
- 打开
C:\Users\你的Windows用户名.ssh\目录,直接用记事本打开公钥文件(github_id_ed25519.pub),复制完整内容即可。
- 打开
总结
-
自定义 Key 核心 :生成时用
ssh-keygen -f 自定义文件名指定名称,避免与其他服务 Key 冲突; -
关键配置 :必须编辑
~/.ssh/config,指定 GitHub 对应的私钥路径,且文件权限为 600; -
验证步骤 :通过
ssh -T git@github.com验证,出现用户名提示即为成功; -
Git 操作:使用仓库的 SSH 地址进行克隆/推送,实现操作,无需使用 HTTPS 地址。
配置完成后,你的自定义 SSH Key 会长期生效,后续访问 GitHub 无需重复输入账号密码,且自定义名称的 Key 便于管理多个服务(如 GitHub、GitLab 各用一个 Key)。