我使用密钥时没有任何密码,因为所有涉及的机器都在相当封闭的环境中运行。所以我不需要 ssh-agent。但我不小心运行了一个似乎启用了它的脚本,但我无法让它停止。
我可以终止该进程,但在下次启动时,由于“解密”密钥不在缓存中,因此我无法在没有错误消息的情况下进行 ssh:
sign_and_send_pubkey: signing failed: agent refused operation
“罪魁祸首”似乎是$SSH_AUTH_SOCK
。如果我把它删除的话,这一切就能解决吗?或者,还有更好的方法?
编辑:$SSH_AUTH_SOCK
仅当我从 GNOME 桌面的终端检查时该变量才存在。如果我从 tty 检查,它不会返回任何内容。
答案1
看来 Gnome 才是真正的罪魁祸首。或者更准确地说是侏儒钥匙圈。你尝试过方法吗在这里建议禁用 gnome 密钥环中的 ssh?该链接涉及 Ubuntu 下的 gnome 密钥环,但该信息似乎与发行版相当不可知。
这Arch Linux 维基对此也有很好的描述:
禁用密钥环守护程序组件
如果您希望运行替代的 SSH 代理(例如 ssh-agent 或 gpg-agent),您需要禁用 GNOME 密钥环的 ssh 组件。要以帐户本地方式执行此操作:
#!/bin/sh
mkdir ~/.config/autostart
cp /etc/xdg/autostart/gnome-keyring-ssh.desktop ~/.config/autostart/ &&
printf '%s\n' 'Hidden=true' >> ~/.config/autostart/gnome-keyring-ssh.desktop