升级Ubuntu 23.10至24.04后ssh-add命令异常求助
升级Ubuntu 23.10至24.04后ssh-add命令异常求助
嗨,看你升级Ubuntu版本后碰到了ssh-add -l报错的问题,我来给你捋捋可能的原因和解决思路~
先复盘下你的问题:
- 升级前一切正常,升级后执行
ssh-add -l直接返回error fetching identities: Invalid key length - 当前使用的SSH版本:
OpenSSH_9.6p1 Ubuntu-3ubuntu13, OpenSSL 3.0.13 30 Jan 2024 - 从strace输出能看到,命令是连接到gpg-agent的SSH套接字后出现的异常
为什么会出现这个错误?
这个报错大概率和过时的密钥算法或者gpg-agent与新版OpenSSH的兼容性有关。OpenSSH 9.0之后对弱密钥(比如长度不足2048位的RSA密钥、使用SHA-1签名的密钥)限制更严格了,而gpg-agent如果没跟上新版本的要求,处理这些密钥时就会触发“无效密钥长度”的错误。
试试这些解决办法:
检查并更新你的SSH密钥
先看看你的密钥是不是不符合新标准了:ssh-keygen -l -f ~/.ssh/id_rsa # 换成你实际的密钥文件名如果是RSA密钥且长度小于2048位,或者用了SHA-1签名,建议生成新的安全密钥:
ssh-keygen -t ed25519 -C "你的邮箱地址"生成完记得把新公钥同步到你需要连接的服务器的
~/.ssh/authorized_keys里哦。调整gpg-agent配置
编辑~/.gnupg/gpg-agent.conf(没有的话直接创建),添加以下内容:enable-ssh-support default-cache-ttl-ssh 86400 max-cache-ttl-ssh 86400然后重启gpg-agent生效:
gpg-connect-agent reloadagent /bye临时绕开gpg-agent测试
如果你想先确认是不是gpg-agent的问题,可以临时指定用原生ssh-agent来运行命令:SSH_AUTH_SOCK=$(ss -lxp | grep ssh-agent | awk '{print $6}' | sed 's/,//') ssh-add -l如果这个命令能正常显示密钥,那说明问题确实在gpg-agent上。你可以考虑切换回原生ssh-agent:
编辑~/.bashrc或者~/.zshrc(看你用的哪个shell),加上:unset SSH_AUTH_SOCK eval $(ssh-agent -s)重启终端后再用
ssh-add ~/.ssh/id_rsa重新添加密钥试试。更新系统组件
有时候系统包的兼容性bug会导致这类问题,先把所有包更到最新试试:sudo apt update && sudo apt upgrade -y
备注:内容来源于stack exchange,提问作者jason120
相关产品推荐
相关产品推荐

