You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行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_key
    
    权限需为600(仅所有者可读可写),否则Git可能拒绝读取。
  • 检查文件内容:确保第一行是-----BEGIN OPENSSH PRIVATE KEY-----(OpenSSH格式),无多余空白或乱码字符。

内容的提问来源于stack exchange,提问作者Aditya Guru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 03:42:27