ssh-agent 服务已为用户启用并且正在运行且没有错误。 (状态为活动)。
但是当我尝试使用 ssh 时,出现错误Could not open a connection to your authentication agent.
。我不明白为什么会发生这种情况。早些时候,ssh 可以立即工作,我可以通过我的密钥连接到服务器,但现在我想连接,但收到错误Permission denied (public key)
,然后我尝试通过添加它ssh-add
,我得到了这个。
我在谷歌上搜索了如何修复它,并找到了一个解决方案eval $(ssh-agent -s)
,但它只适用于bash
,而且我正在使用fish
,并且我在谷歌上搜索到你必须手动设置环境变量,然后你每次都必须这样做,它曾经是工作。我在谷歌上搜索了如何让它自己运行,并在谷歌上搜索到我需要启用 ssh-agent 守护进程,但我已经启用了它并且它可以工作,但错误仍然存在,即使我运行 bash,同样的错误。
系统:Arch Linux
答案1
我用谷歌搜索了如何修复它,找到了一个解决方案 eval $(ssh-agent -s),但它只适用于 bash,我正在使用 Fish
这并不适用于此;这是启动一个的命令新的ssh-agent 的实例(更重要的是,设置 ssh-agent 启动时输出的环境变量)。
在语法之前先关注命令的语义;如果命令执行正确事物那么您可以将其语法适应任何 shell。
我在那里搜索到你必须手动设置环境变量,然后你每次都必须这样做
您确实每次都必须这样做。
Arch Linux 提供的 .service 没有任何允许 ssh-agent 为整个用户设置环境变量的选项(它有 PassEnvironment=,它的工作方向实际上与软件包维护者认为的相反,所以在这种情况下它什么也不做),并且 systemd 甚至没有一个允许这样做的通用机制。
因此,使用此服务的唯一方法是通过登录脚本手动设置 SSH_AUTH_SOCK(例如通过 ~/.bashrc 或 ~/.profile)。
它曾经有效
您可能使用的是不同的东西,例如 GNOME Keyring(它有一个 PAM 模块,允许它在登录时自动设置 ssh-agent 环境变量)或 pam_ssh (同样)。