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

本文介绍如何在 Linux、macOS 和 Windows 环境下为 GitHub 配置自定义命名的 SSH 密钥,实现免密码访问。适配所有系统(Linux/macOS/Windows Git Bash)。
使用 ssh-keygen 命令,通过 -f 参数指定密钥文件名(核心:自定义名称),优先推荐 ED25519 算法(更安全、体积小),兼容旧系统可使用 RSA。
github_id_ed25519)# -t:指定加密算法
# -f:指定密钥文件路径 + 名称(~/.ssh/ 是默认 SSH 目录,后面跟自定义文件名)
# -C:添加注释(建议填写 GitHub 绑定的邮箱,方便识别)
ssh-keygen -t ed25519 -f ~/.ssh/github_id_ed25519 -C "your_github_email@xxx.com"
github_id_rsa)# -b 4096:指定密钥长度(更安全)
ssh-keygen -t rsa -b 4096 -f ~/.ssh/github_id_rsa -C "your_github_email@xxx.com"
执行命令后,会出现 3 次提示,全部回车默认即可(无需设置密钥密码,设置则登录时需额外输入密钥密码):
Enter passphrase (empty for no passphrase):输入密钥密码(回车跳过,无密码);Enter same passphrase again:再次确认密钥密码(回车跳过);github_id_ed25519 为例:
~/.ssh/github_id_ed25519:私钥(核心,严格保管,不可公开泄露);~/.ssh/github_id_ed25519.pub:公钥(需上传到 GitHub,可公开)。# 查看 ~/.ssh 目录下的文件
ls -l ~/.ssh/
若能看到 github_id_ed25519 和 github_id_ed25519.pub(或自定义的其他名称),说明生成成功。
首先读取自定义公钥的内容,完整复制(包括末尾的注释,不可遗漏、不可多空格):
# 以自定义文件 github_id_ed25519.pub 为例,替换为你的公钥文件名
cat ~/.ssh/github_id_ed25519.pub
执行后,终端会输出一串以 ssh-ed25519(或 ssh-rsa)开头的字符串,完整复制这串内容(可直接选中复制,或重定向到文件后复制)。
Title:标题(自定义,方便识别,如「My MacBook Pro」「Work Linux」);Key type:选择「Authentication key」(认证密钥,默认);Key:粘贴第一步复制的完整公钥内容(确保无换行、无多余空格);由于我们使用了非默认名称的 SSH Key,需要配置本地 ~/.ssh/config 文件,告诉 SSH「访问 GitHub 时,使用哪个自定义私钥」,否则 Git 会默认使用 id_ed25519/id_rsa,导致认证失败。
# 编辑 ~/.ssh/config 文件(无则自动创建)
vim ~/.ssh/config
粘贴以下内容(根据你的密钥文件名修改 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 # 强制使用指定的私钥,避免加载其他密钥导致冲突
github_id_rsa),只需将 IdentityFile 改为 ~/.ssh/github_id_rsa 即可;Esc,输入 :wq 回车)。SSH 对 config 文件权限有严格要求,非 600 会导致配置失效,执行以下命令修复权限:
chmod 600 ~/.ssh/config
同时,确保私钥文件权限为 600(避免认证失败):
# 以 github_id_ed25519 为例,替换为你的私钥文件名
chmod 600 ~/.ssh/github_id_ed25519
# 连接 GitHub SSH 服务器,验证配置是否生效
ssh -T git@github.com
首次连接时,会出现「主机密钥验证」提示,输入 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
若终端输出以下内容(包含你的 GitHub 用户名),说明配置成功,已实现访问:
Hi your-github-username! You've successfully authenticated, but GitHub does not provide shell access.
配置成功后,使用 SSH 地址克隆 GitHub 仓库,即可实现提交/推送代码:
# 示例:克隆一个测试仓库(替换为你的仓库 SSH 地址)
git clone [email protected]:your-github-username/your-repo-name.git
git push,无需输入账号密码,直接推送成功。~/.ssh/config 中的 IdentityFile 路径是否正确(是否指向自定义私钥);config 文件权限是否为 600(权限过宽会导致 SSH 拒绝使用);ssh -T [email protected] -v(-v 显示调试信息),查看具体认证失败原因。IdentitiesOnly yes 避免冲突,若仍有问题,可给不同服务配置不同的 Host 别名(如 GitHub 配置 Host github,克隆时用 git@github:username/repo.git)。C:\Users\你的 Windows 用户名.ssh\ 目录,直接用记事本打开公钥文件(github_id_ed25519.pub),复制完整内容即可。ssh-keygen -f 自定义文件名 指定名称,避免与其他服务 Key 冲突;~/.ssh/config,指定 GitHub 对应的私钥路径,且文件权限为 600;ssh -T [email protected] 验证,出现用户名提示即为成功;配置完成后,你的自定义 SSH Key 会长期生效,后续访问 GitHub 无需重复输入账号密码,且自定义名称的 Key 便于管理多个服务(如 GitHub、GitLab 各用一个 Key)。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online