GitHub SSH 配置与多密钥管理交流总结
1. 配置 SSH 私钥权限
1 | chmod 600 /c/hexo/blog/123456 |
- 没有输出即为成功。
2. 测试 SSH 连接
1 | ssh -v -T -p 443 git@ssh.github.com |
- 正常情况会看到:
Hi chao0425! You've successfully authenticated, but GitHub does not provide shell access.
3. SSH 未找到私钥的排查
问题表现
- 用
-i /c/hexo/blog/123456
可以连接; - 直接用
ssh -T -p 443 git@ssh.github.com
报Permission denied (publickey)
。
原因
- SSH 只会自动加载
~/.ssh
下的默认密钥(如 id_rsa、id_ed25519),不会自动加载自定义路径的密钥,除非在 config 里指定。
4. 正确配置 ~/.ssh/config
1 | Host github.com ssh.github.com |
- Host 可以写多个名(空格分隔),这样无论用
github.com
还是ssh.github.com
都会用指定密钥。 - 路径大小写、斜杠要准确。
5. 配置好 config 后的用法
- 以后所有 git/ssh 命令无需再加
-i
参数,自动使用 config 指定的密钥。 - 只需:
1
2
3ssh -T github.com
# 或
ssh -T -p 443 git@ssh.github.com
6. push 到哪里?如何 push?
- push 的目标由
git remote -v
决定,通常是origin
,即你 GitHub 仓库。 - 常用命令:
1
2
3git add .
git commit -m "提交说明"
git push origin main # 或 master - 通常直接
git push
即可。
7. 多个 SSH 密钥时,如何确定用哪一把?
- 有
-i
参数时:只用指定的那把。 - 有
~/.ssh/config
时:优先用 config 里为 Host 配置的IdentityFile
。 - 都没有时:依次尝试
~/.ssh/id_rsa
、id_ed25519
等默认密钥。 - config 里同一个 Host 可配置多个
IdentityFile
,SSH 会按顺序尝试。
8. 删除不用的密钥时,config 要同步修改吗?顺序能配吗?
- 要删除不用的密钥,config 要同步修改,否则会找不到密钥导致认证失败。
- config 可以为同一 Host 配置多把 IdentityFile,SSH 会按写入顺序依次尝试。
- 推荐每个 Host 只配置一把密钥,保持 config 简洁。
9. 常见排查方法
- 用
ssh -v ...
查看详细日志,关注Offering public key:
行。 - 检查 config 的 Host 是否和 ssh 命令保持一致。
- 路径不要错,权限不要错。
10. 总结
- 建议用
~/.ssh/config
管理多密钥,多账号用 Host 别名区分。 - config 路径、Host、User、Port、IdentityFile 都要写对。
- 删除/更换密钥要同步修改 config。
- 日常操作无需再加
-i
,直接用 git/ssh 命令即可。
如果需要更多复杂场景的配置示例,可随时补充!