SSH 报错解决方法记录汇总
SSH 密钥签名失败
情景: 使用 SSH 密钥验证身份时
报错:
sign_and_send_pubkey: signing failed: agent refused operation
环境: Debian 9.7 (Stretch)
解决方法:
1)确认问题
在 SSH 命令前添加“SSH_AUTH_SOCK=0”:
SSH_AUTH_SOCK=0 ssh <username>@<server>
如果可以正常登录,而显示变量 SSH_AUTH_SOCK
内容时输出:
echo $SSH_AUTH_SOCK
/run/user/1000/keyring/ssh
则我们就可以确定是由 Gnome Keyring
带的 SSH Agent
导致的密钥签名失败问题。Gnome Keyring SSH Agent
并不能总是正确处理所有格式的 SSH 密钥。但是它却试图处理所有的 SSH 密钥,从而出错。(典型的没有金刚钻,还要揽这瓷器活儿)
如果还是没法正常登录,说明是 ssh-agent
不存在或者存在但没有找到密钥。可以参考这里,几条命令就可以解决。
2)解决问题
之前提到,如果 ssh
命令前面添加 SSH_AUTH_SOCK=0
后可以正常登录,说明是 Gnome Keyring SSH Agent
在试图处理它可能并不能处理的 SSH 密钥编码方式。那么解决方法就可以有两种:禁用 Gnome Keyring SSH Agent
自启动,或用 ssh-keygen
重新生成、上传 Gnome Keyring SSH Agent
能够处理的编码方式所生成的公私钥对。
其中,第二种方法在这篇博文中提到过。这种方法的优点是不用更改本地系统设置,缺点是需要更新所有服务器的公钥,对于那些将公钥上传到多个服务(比如 GitHub,GitLab,DigitalOcean 等)的人来说需要做很多重复性操作,比较麻烦;
第一种方法会更改系统设置,但也只是最低限度的更改(仅禁用 Gnome Keyring
下的 SSH Agent
开机自启动),几乎不影响系统功能。因此,Gnome Keyring SSH Agent
完全可以由 OpenSSH
的 ssh-agent
替代。
具体方法如下:
- 打开搜索栏,搜索
Startup Applications
应用并运行(如果没有安装会提示安装); - 在弹出的窗口中找到
SSH Key Agent GNOME Keyring: SSH Agent
,关闭自启; - 重启系统。
Written with StackEdit.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)