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

隧道SSH执行git ls-remote报SHA-1不支持错误,但ssh -T正常

解决方案与排查步骤

1. 检查SSH代理中的密钥列表

执行以下命令查看当前SSH代理中加载的所有密钥:

ssh-add -l

如果列表中存在SHA-1签名的RSA密钥(格式类似2048 SHA1:xxxxx ...),立即从代理中移除:

ssh-add -d ~/.ssh/旧密钥文件名

即使你已经注释了全局配置中的旧密钥,SSH代理可能仍缓存着之前加载的密钥,导致Git操作时优先使用它。

2. 为GitHub配置独立的SSH规则

在~/.ssh/config中添加针对GitHub的专属配置,强制使用兼容的密钥和算法,避免全局配置的干扰:

Host github.com
  HostName github.com
  User git
  # 指定你确认有效的密钥(比如ED25519或ECDSA)
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes
  # 仅启用GitHub支持的现代算法
  PubkeyAcceptedAlgorithms ssh-ed25519,ecdsa-sha2-nistp256
  HostKeyAlgorithms ssh-ed25519,ecdsa-sha2-nistp256

配置完成后,重新执行Git命令测试。

3. 查看Git SSH调用的详细日志

通过启用SSH调试模式,追踪Git实际使用的密钥和算法:

GIT_SSH_COMMAND="ssh -v" git ls-remote --heads git@github.com:company_org/repository.git

在输出日志中查找debug1: Offering public key:的行,确认Git尝试的密钥类型;同时关注服务器返回的错误细节,定位是否存在算法不兼容或密钥误用的问题。

4. 检查隧道SSH配置的冲突

确认你的隧道主机(tunnelhost)的SSH配置中,没有覆盖ForwardAgent或强制使用旧算法的规则。可以临时修改隧道配置,添加IdentitiesOnly yes,避免隧道端加载额外密钥:

Host tunnelhost
  HostName tunnelhost.example.com
  User your-username
  ForwardAgent yes
  ProxyCommand ssh tunnelhost exec nc %h 22
  IdentitiesOnly yes

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 07:12:28