0

我在 Pop!_OS 上运行,所以对于大多数事情来说,这很可能是 Ubuntu 的等价物。安装 KeepassXC 并启用 SSH-Agent。有一个密钥短语配置了一个密钥,当我从终端登录启动 keepassxc 时,它就像一个魅力keepassxc,然后我可以看到它ssh-add -l列出了一个额外的密钥。一旦我关闭 KeePassXC,它也会消失。完美的!

现在我从 gnome shell 启动 keypassXC,点击超级键,搜索 keepassXC 并登录到它的保管库。看着ssh-add -l终端:什么都没有。没有添加键。

现在我看了一下/usr/share/applications/org.keepassxc.KeePassXC.desktop并更改Terminal=falsetrue. 不,遗憾的是没那么容易。

我的猜测是它与 gnome shell 如何启动 KeePassXC 有关,但不能确定问题是什么。任何人都知道这可能是什么或如何解决这个问题?

4

1 回答 1

0

我让 KeepassXC ssh 代理在 Ubuntu 16.04.6 上工作,Unity 作为窗口管理器。

问题是,如果在窗口管理器启动之前未设置 SSH_AUTH_SOCK 环境变量,则它不适用于在窗口管理器中启动的程序。

一些发行版在窗口管理器之前有一个用于启动程序的系统,例如 ssh-agent。在我的发行版中,我发现 /etc/X11/Xsession.d/90x11-common_ssh-agent 正在启动 ssh-agent。有关更多信息,请参阅有关KeepassXC 的用户帮助问题的评论

但是我还发现 GNOME Keyring 正在启动自己的 ssh 代理。我不得不在启动应用程序中禁用它。我还检查了没有 shell 启动脚本(即.bashrc .bash_profile .profile .config/fish/config.fish尝试启动 ssh-agent,因为这样做会替换在窗口管理器之前启动的脚本。

一个有趣的旁注,即 ttys,您可以使用 Ctrl+Alt+F1、Ctrl+AltF2 等,也没有设置 SSH_AUTH_SOCK 环境变量,因为它们在窗口管理器之前启动。如果您在此处需要它,您可以添加代码来查找和设置 SSH_AUTH_SOCK。对于鱼壳,我将以下内容添加到~/.config/fish/config.fish

# Set SSH_AUTH_SOCK if not set.
if test -z "$SSH_AUTH_SOCK";
  set -gx SSH_AUTH_SOCK (find /tmp/ -path "/tmp/ssh-*/agent.*" 2>/dev/null)
end

我还发现,在即将发布的 KeepassXC 2.6.0 版本(目标为 2020 年 4 月 3 日)中,将添加一个允许覆盖的设置,或设置用于 SSH_AUTH_SOCK 的值。但是,由于每次 ssh-agent 启动时都会发生变化,您要么需要继续更改它,要么设置一个指向当前 sock 的链接。

于 2020-03-20T12:19:29.957 回答