Ubuntu 16.04 ssh:sign_and_send_pubkey:签名失败:代理拒绝操作

Lek*_*nic 253 ssh 16.04

我刚刚通过从我的系统中完全擦除 Ubuntu 15 分区将我的 Ubuntu 系统从 15.10 升级到 16.04。

安装 Ubuntu 16.04 后,我重新创建了我的 ssh 密钥,因为我忘记备份它们,但是每当我尝试使用 ssh 时,我都会sign_and_send_pubkey: signing failed: agent refused operation感到有点烦人,因为它让我可以通过我的 ssh 服务器,但是 git 拒绝使用 ssh 推送代码。

我已经通过使用将密钥推送到服务器ssh-copy-id

我连接的服务器是通过do-release-upgrade命令升级的 Ubuntu 16.04 服务器。任何帮助将不胜感激。

Ron*_*Ron 406

看起来ssh-agent已经在运行,但找不到任何附加的键。要解决此问题,请将私钥身份添加到身份验证代理,如下所示:

ssh-add
Run Code Online (Sandbox Code Playgroud)

然后你就可以ssh进入你的服务器了。

此外,您还可以看到当前添加的所有身份的指纹列表:

ssh-add -l
Run Code Online (Sandbox Code Playgroud)

  • @Daniel Alder 确实是小写的`l`。 (6认同)
  • 在您的第二个命令中,它不是 -1(数字 <one>),而是 -l(小写 L) (3认同)
  • 在添加之前必须将我的密钥的权限更改为 0400 (3认同)
  • 我认为除了使用“ssh-add -l”之外,您不应该使用“ssh-add”,因为“ssh-agent”中可能会出现太多条目。无需手动添加。`Dash > Startup Applications`显示`ssh-agent`已经在运行,它会自动检测`~/.ssh/id_rsa`和`~/.ssh/id_rsa.pub`等文件。为了证明这一点,您可以在使用“ssh-keygen”之前和之后使用“ssh-add -l”。您将看到它监视文件,因此您不必手动添加它们。 (2认同)

Ant*_*sta 189

简单的解决方案

我在 Ubuntu 18.04 上遇到了同样的问题。这就是客户端私钥权限的全部内容。

$ ssh root@192.168.1.1
sign_and_send_pubkey: signing failed: agent refused operation
Run Code Online (Sandbox Code Playgroud)

文件权限太开放 (0644)。

以下命令解决了它:

chmod 600 ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

  • 这个就在这里!谢谢你。 (8认同)
  • 如果有人因为将密钥从一台计算机复制到另一台计算机而最终来到这里,这是正确的答案。这就是我的情况。 (5认同)
  • 如果你使用 [Ed25519](https://ed25519.cr.yp.to/) 你应该执行:```chmod 600 ~/.ssh/id_ed25519``` (3认同)

小智 77

我有同样的问题(相同的症状)

sam@xxxxx:~/.ssh$ ssh centos@123.123.123.123
sign_and_send_pubkey: signing failed: agent refused operation
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
Run Code Online (Sandbox Code Playgroud)

...但解决方案是不同的。

问题来自使用 GNOME-KEYRING。可以在此处阅读有关解决方案的帖子。

简而言之:

  1. 通过在 ssh 命令前面添加 SSH_AUTH_SOCK=0 来检测问题。sam@xxxxx:~/.ssh$ SSH_AUTH_SOCK=0 ssh centos@123.123.123.123
  2. 万一连接成功。打开应用程序启动应用程序(例如使用桌面的搜索功能)并禁用 gnome-keyring。
  3. 重启

如果使用不同的解决方案出现类似问题,该页面会提供其他详细信息。

  • 您的解决方案对我有用(具有相似症状的不同问题)。使用第 1 步时,我收到错误消息“'.ssh/id_rsa' 的权限 0775 太开放了”。这里的简单解决方案是`chmod 600 .ssh/id_rsa`。 (25认同)
  • 这不仅有助于调试 ssh shell 连接,还有助于调试 git ssh auth。在 `git pull` 之前使用了这个命令 `SSH_AUTH_SOCK=0` 并得到了像 Matt 一样的权限警告。 (3认同)

Mik*_*ike 28

sign_and_send_pubkey: signing failed: agent refused operation当我登录到几台服务器并阅读VonC 在 Stack Overflow 上的回答时,我得到了有关相关错误的更多信息。我的解决方案是从 中删除gnome-keyring、删除身份ssh-agent,然后重新启动。

sudo apt-get autoremove gnome-keyring
ssh-add -D
Run Code Online (Sandbox Code Playgroud)

然后我所有的钥匙开始完美地工作。

不卸载钥匙圈的临时解决方案

如果您想将 保留gnome-keyring在本地计算机上并且出现agent refused operation错误,请使用:

eval `ssh-agent -s`
ssh-add
Run Code Online (Sandbox Code Playgroud)

或使用SSH_AUTH_SOCK=0 ssh your-server.

无需卸载密钥环的永久解决方案

如果可以,gnome-keyring与 4096 位 RSA 密钥兼容,因此只需生成一个新密钥:

ssh-keygen -t rsa -f ~/.ssh/your-key-name -b 4096 -v -C root
Run Code Online (Sandbox Code Playgroud)

上传公钥到服务器:

ssh-copy-id -i ~/.ssh/your-key-name.pub root@12.34.56.78
Run Code Online (Sandbox Code Playgroud)

将 ssh 密钥添加到代理:

ssh-add ~/.ssh/your-key-name
Run Code Online (Sandbox Code Playgroud)

这应该可以在没有任何额外黑客的情况下工作,并且gnome-keyring可以保持安装状态。

(这-C [username]是可选的,但 Google Cloud 等提供商需要。)

  • 是的,但这会删除所有非常有用的 ssh-agent 功能 (2认同)

小智 15

升级到 Ubuntu 18.04 后,我遇到了同样的错误sign_and_send_pubkey: signing failed: agent refused operation。原来是因为 ssh 密钥的权限太开放了。以下命令为我解决了问题 chmod 600 .ssh/id_rsa


Dan*_*der 8

在我的系统(也是 Ubuntu 16.04,尝试连接到 github)上,我的 .ssh 文件夹中有一个文件 id_ed25519 导致ssh-add失败:

$ ssh-add
Identity added: ~/.ssh/id_rsa (~/.ssh/id_rsa)
Could not add identity "~/.ssh/id_ed25519": communication with agent failed
Run Code Online (Sandbox Code Playgroud)

删除文件后~/.ssh/id_ed25519*(不再需要它们,它来自早期的测试)一切又正常了。

  • 如果您确实需要它们怎么办? (2认同)
  • @GringoSuave 这里的解决方案也是摆脱 gnome 身份验证代理,该代理将代理套接字强加到您的外壳上,而不是普通的“ssh-agent”套接字。普通的 ssh-agent 能够处理 ED25519 密钥,而 gnome 身份验证代理则不能(除了它导致的其他问题)。见 sam https://askubuntu.com/a/835114/167846 或 Mike https://askubuntu.com/a/762968/167846 的回答 (2认同)

qwe*_*guy 7

发生在我身上是因为我的私钥有密码。必须运行ssh-add,然后它要求输入密码并正确添加。但是,它现在在 ssh 到一台机器时不会询问我的密码。


小智 6

我全新安装了 Ubuntu16.04,并且遇到了类似的问题。当我在将我的公钥复制到 github(按照github.com 上的说明)并执行以下检查(在 github.com上推荐)之后尝试从 Github 克隆我的存储库时:

ssh -T git@github.com
Run Code Online (Sandbox Code Playgroud)

我受到了以下的欢迎:

sign_and_send_pubkey: signing failed: agent refused operation
Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)

为了快速修复它,而不删除任何内容或更改我的启动配置,我只是在终端中输入以下内容:

killall gnome-keyring-daemon
Run Code Online (Sandbox Code Playgroud)

然后克隆工作了。然后我通过键入以下内容再次启动停止的守护进程:

gnome-keyring-daemon
Run Code Online (Sandbox Code Playgroud)

后来,为了以更永久的方式改变事物,我遵循了这里的建议


小智 5

将 Fedora 26 升级到 28 后,我遇到了同样的问题。并且没有日志文件

no /var/log/secure
no /var/log/messages

antop@localmachine ? ~ ? ssh root@ocp1.example.com
sign_and_send_pubkey: signing failed: agent refused operation
root@ocp1.example.com's password:
Run Code Online (Sandbox Code Playgroud)

错误消息没有指向实际问题。问题已解决

chmod 700 ~/.ssh
chmod 600 ~/.ssh/*
Run Code Online (Sandbox Code Playgroud)


小智 5

gpg-connect-agent updatestartuptty /bye,然后重试。