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 完全可以由 OpenSSHssh-agent 替代。
具体方法如下:

  1. 打开搜索栏,搜索 Startup Applications 应用并运行(如果没有安装会提示安装);
  2. 在弹出的窗口中找到 SSH Key Agent GNOME Keyring: SSH Agent,关闭自启;
  3. 重启系统。

Written with StackEdit.

posted @ 2019-02-18 14:34  LexLuc  阅读(1829)  评论(0编辑  收藏  举报