问题描述
我刚刚从我的系统中删除了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服务器。任何帮助将不胜感激。
最佳解决思路
看起来像一个ssh-agent
已经运行,但它无法找到任何附加的键。要解决这个问题,请将私钥身份添加到身份验证代理,如下所示:
ssh-add
然后你可以将ssh
放入你的服务器。
此外,您可以通过以下方式查看当前添加的所有身份的指纹列表:
ssh-add -l
次佳解决思路
我有同样的问题(相同的症状)
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).
…但解决方案是不同的。
问题来自使用GNOME-KEYRING。涉及解决方案的帖子可能是here。
简而言之:
-
通过在ssh命令前添加SSH_AUTH_SOCK = 0来检测问题。 sam @ xxxxx:〜/.ssh $ SSH_AUTH_SOCK = 0 ssh centos@123.123.123.123
-
如果它成功连接。打开应用程序启动应用程序(例如使用桌面的搜索功能)并禁用gnome-keyring。
-
重启
该页面提供了其他细节,以解决与解决方案类似的问题。
第三种解决思路
在登录到多个服务器时,我正在获取sign_and_send_pubkey: signing failed: agent refused operation
,请阅读VonC’s answer on Stack Overflow以获取有关相关错误的更多信息,解决方案是删除gnome-keyring,从ssh-agent删除标识并重新启动。
sudo apt-get autoremove gnome-keyring
ssh-add -D
然后我所有的钥匙开始工作完美。
第四种思路
在我的系统上(也是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
删除文件~/.ssh/id_ed25519*
(不再需要它们,它是从一个较早的测试),一切都很好再次。
第五种思路
碰巧发生在我身上,因为我的私钥有密码。必须运行ssh-add
然后它询问密码并正确添加。但是,现在当ssh’ing到机器时,它不会要求我的密码。