为什么 ssh-agent.service 正在运行,但当我使用 ssh-add 时,连接到代理时出现错误?

为什么 ssh-agent.service 正在运行,但当我使用 ssh-add 时,连接到代理时出现错误?

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 (同样)。

答案2

你基本上有两个选择:

  1. 使用-c标志:eval (ssh-agent -c)
  2. 改用keychain

来源

相关内容