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这类传统签名算法,我们可以手动开启:
- 进入容器终端,编辑(或创建)
~/.ssh/config文件:nano ~/.ssh/config - 添加以下配置(覆盖所有Git服务器):
Host * PubkeyAcceptedKeyTypes +ssh-rsa PubkeyAcceptedAlgorithms +ssh-rsa注:不同OpenSSH版本的配置项略有区别,
PubkeyAcceptedKeyTypes是旧版本(<8.5)的参数,PubkeyAcceptedAlgorithms是新版本的参数,两者都加能兼容更多场景。 - 保存退出后,直接重试
git pull即可。
方法2:调整本地SSH Agent的签名算法优先级
如果本地SSH Agent默认使用了容器不支持的高版本签名算法,我们可以强制它优先使用兼容的算法:
- 在本地终端(不是容器内),先移除已加载的密钥:
ssh-add -d ~/.ssh/your_private_key # 替换成你的私钥路径,比如~/.ssh/id_rsa - 重新加载密钥并指定签名算法:
ssh-add -t rsa-sha2-256 ~/.ssh/your_private_key - 或者修改本地
~/.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并添加密钥(注意:这个方法每次重启容器都需要重新操作):
- 停止容器内现有的SSH Agent:
eval "$(ssh-agent -k)" - 启动新的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
相关产品推荐
相关产品推荐

