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

VS Code Docker开发容器Git拉取报错:RSA SHA256签名类型不正确

解决VS Code Dev Container中Git Pull的SSH签名类型错误

我之前在Dev Container里也碰到过一模一样的问题!这个报错agent key RSA SHA256:xxxxxxxxxxxxxxxxxxx returned incorrect signature type本质是本地SSH Agent和容器里的Git/OpenSSH对RSA密钥的签名算法支持不兼容导致的,给你几个亲测有效的解决办法:

方法1:修改容器内的SSH配置,兼容旧签名算法

容器里的OpenSSH版本可能比较旧,默认禁用了ssh-rsa这类传统签名算法,我们可以手动开启:

  1. 进入容器终端,编辑(或创建)~/.ssh/config文件:
    nano ~/.ssh/config
    
  2. 添加以下配置(覆盖所有Git服务器):
    Host *
      PubkeyAcceptedKeyTypes +ssh-rsa
      PubkeyAcceptedAlgorithms +ssh-rsa
    

    注:不同OpenSSH版本的配置项略有区别,PubkeyAcceptedKeyTypes是旧版本(<8.5)的参数,PubkeyAcceptedAlgorithms是新版本的参数,两者都加能兼容更多场景。

  3. 保存退出后,直接重试git pull即可。

方法2:调整本地SSH Agent的签名算法优先级

如果本地SSH Agent默认使用了容器不支持的高版本签名算法,我们可以强制它优先使用兼容的算法:

  1. 在本地终端(不是容器内),先移除已加载的密钥:
    ssh-add -d ~/.ssh/your_private_key  # 替换成你的私钥路径,比如~/.ssh/id_rsa
    
  2. 重新加载密钥并指定签名算法:
    ssh-add -t rsa-sha2-256 ~/.ssh/your_private_key
    
  3. 或者修改本地~/.ssh/config文件,永久设置签名算法优先级:
    Host *
      SignatureAlgorithms ssh-rsa,rsa-sha2-256,rsa-sha2-512
    

方法3:更新容器内的OpenSSH和Git版本

如果你的容器基于旧镜像(比如Ubuntu 18.04、CentOS 7),里面的OpenSSH版本可能过低,直接更新到最新版就能解决兼容问题:

  • 对于Ubuntu/Debian系容器:
    sudo apt update && sudo apt install --only-upgrade openssh-client git
    
  • 对于Alpine系容器:
    sudo apk update && sudo apk upgrade openssh-client git
    

更新完成后重启容器,再尝试git pull。

方法4:在容器内重新初始化SSH Agent(临时方案)

如果前面的配置都不生效,可以尝试在容器内重新启动SSH Agent并添加密钥(注意:这个方法每次重启容器都需要重新操作):

  1. 停止容器内现有的SSH Agent:
    eval "$(ssh-agent -k)"
    
  2. 启动新的Agent并添加共享到容器的私钥:
    eval "$(ssh-agent -s)"
    ssh-add /path/to/your/private/key  # 替换成容器内的私钥路径,比如~/.ssh/id_rsa
    

验证问题根源

如果还是不确定问题所在,可以在容器内运行以下命令查看SSH协商过程:

ssh -v git@your-git-server.com  # 替换成你的Git服务器地址,比如github.com

查看输出中关于“signature algorithm”的部分,就能明确是哪一方不支持对应的算法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 14:27:48