作者:张华 发表于:2026-10-09
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明
今天运行下列命令时总是报: Permission denied (publickey)
git push git+ssh://xxx@git.launchpad.net/~xxx/ubuntu/+source/resource-agents jammy-iscsi-target-missing
排查后的根本原因有两个:
- ssh-agent 缓存了过多密钥(11 个): 本地 ssh-agent 中加载了 11 个不同机器的私钥。
- 当连接git.launchpad.net 时,SSH 默认会逐个尝试这些密钥。而 Launchpad 服务器对认证尝试次数有限制,在试到Launchpad 登记的正确密钥之前,连接就因为"尝试次数过多(Too many authenticationfailures)"被直接切断了(表现为 Connection closed 或 Permission denied)。
- OpenSSH 默认禁用了老旧的 ssh-rsa 签名算法:Launchpad 绑定的 RSA 密钥(hua@mi)在较新的 OpenSSH(9.6+)中,如果不显式指PubkeyAcceptedAlgorithms +ssh-rsa,OpenSSH 会拒绝使用该算法完成挑战应答。
Fix是在 ~/.ssh/config中添加下列配置:
Host *.launchpad.net upload.ubuntu.com git.qastaging.paddev.net
User xxx
IdentityFile ~/.ssh/id_rsa
IdentitiesOnly yes
PubkeyAcceptedAlgorithms +ssh-rsa