执行Git操作(如clone)时出现SSH密钥配置行错误求助
Git操作失败但SSH验证正常的调试方案
问题背景
- 无法执行
git clone、git status等Git操作,但通过SSH可成功验证GitHub身份:ssh -vvv -i ~/.ssh/my_github_key -T git@github.com # 输出:Hi my_id! You've successfully authenticated, but GitHub does not provide shell access. - Git操作报错:
fatal: bad config line 1 in file ~/.ssh/my_github_key(错误指向SSH密钥文件而非Git配置文件) - Git版本:
git version 2.41.0
调试步骤
1. 排查Git的SSH命令配置
Git会通过GIT_SSH_COMMAND环境变量或全局/本地Git配置指定SSH调用方式,检查是否误将密钥文件当作SSH配置文件加载:
- 查看环境变量:
echo $GIT_SSH_COMMAND - 查看全局Git配置:
git config --global --list - 查看本地仓库配置(若在仓库目录下):
git config --local --list
如果发现类似sshCommand="ssh -F ~/.ssh/my_github_key"的配置,这就是问题——-F是指定SSH配置文件的参数,应改为sshCommand="ssh -i ~/.ssh/my_github_key"(-i指定密钥文件)。
2. 手动指定SSH命令测试Git操作
绕过现有配置,直接指定正确的SSH命令执行Git操作,验证是否能正常工作:
GIT_SSH_COMMAND="ssh -i ~/.ssh/my_github_key" git clone git@github.com:my_id/repo1.git
若此命令成功,说明是Git的SSH配置有误。
3. 检查SSH全局配置文件
查看~/.ssh/config是否存在针对github.com的错误配置:
cat ~/.ssh/config
确保配置格式正确,示例:
Host github.com IdentityFile ~/.ssh/my_github_key User git
4. 启用全量调试日志
启用Git和SSH的详细日志,追踪Git调用SSH的完整过程:
GIT_TRACE=1 GIT_SSH_COMMAND="ssh -vvv" git clone git@github.com:my_id/repo1.git
通过日志可明确Git是否错误地将密钥文件当作配置文件读取。
5. 验证密钥文件的权限与格式
尽管SSH可正常使用,仍需确认密钥文件符合Git的要求:
- 检查文件权限:
权限需为ls -l ~/.ssh/my_github_key600(仅所有者可读可写),否则Git可能拒绝读取。 - 检查文件内容:确保第一行是
-----BEGIN OPENSSH PRIVATE KEY-----(OpenSSH格式),无多余空白或乱码字符。
内容的提问来源于stack exchange,提问作者Aditya Guru
相关产品推荐
相关产品推荐

