反复出现“代理程序承认无法使用密钥签名”的错误和无密码SSH

我networking上的一台机器(Mint 12工作站,最新)周期性地进入一个坏的状态,其中所有输出的SSH连接回退到密码authentication,并出现错误“代理承认使用密钥签名失败”而不是使用密钥已configuration的基于身份validation。

一旦处于这种状态,所有传出连接都将100%的时间失败。 传入的基于密钥的身份validation似乎正常连接。 我已经尝试删除和重新生成密钥对并重新分配公钥,但错误仍然存​​在。

重新启动会暂时解决错误,但几天后会再次出现。 似乎不符合任何特定的事件/工作stream程,但我可能会错过一些东西。

有没有人看过这个?

这里的“代理”是ssh-agent ,一个将私钥加载到内存中的程序,并保存它以供将来的ssh连接使用,因此您不必重新input密码。 它看起来像沿线的某个地方,它被命令忘记密钥(你挂起到磁盘/hibernate吗?这可能会阻止未encryption的密钥写入磁盘)或有一个错误,导致它忘记了键。 无论哪种方式, ssh-add应该允许您将密钥添加回代理。

相当肯定你会得到一个不同的错误信息,如果由于某种原因ssh无法与ssh-agent交谈。 如果ssh-add说它不能打开到你的authentication代理的连接,那真正的问题是它停止运行,或者告诉ssh如何与代理联系的环境variables已经丢失了,或者socket文件已经消失。 如果环境variables$SSH_AUTH_SOCK$SSH_AGENT_PID在发生这种情况时仍然被设置(使用echo $SSH_AGENT_PID ),请确保由$SSH_AGENT_PID引用的ssh-agent进程仍在运行,如果是,那么$SSH_AUTH_SOCK仍然在那里。 这可能是你有一个积极的/tmp清洁过程,是删除sockets。