将 ssh-agent 插入到 i3wm 的启动中,以便会话中的所有进程都可以使用它

将 ssh-agent 插入到 i3wm 的启动中,以便会话中的所有进程都可以使用它

我使用i3wmFedora 上的窗口管理器,并urxvt-mld使用我的多urxvt-mlc终端客户端的终端守护进程。

我的问题是,我只希望ssh-agent整个会话中只有一个,并且ssh-agent所有终端窗口都可以使用,这最容易做到

ssh-agent urxvt-mld

然而,由于 X 会话和窗口管理器启动涉及各种文件,我不知道将其放在哪里。

它是否应该进入i3配置文件,在i3wm启动时读取?我预计的问题是重新启动窗口管理器可能会关闭所有终端。(或者可能不会,如果代理进程与i3进程树分离...)

我不介意发出一个ssh-add命令会话,但我希望能够从任何终端窗口执行此操作。因此希望将它们全部设为运行的进程的子进程ssh-agent

用户服务是否systemd合适?如何才能wantsrequires正确的时间实现用户服务?

谢谢你的帮助!

答案1

您可以使用钥匙链。 来自手册页

keychain 是 ssh-agent 的管理器,通常从 ~/.bash_profile 运行。它允许您的 shell 和 cron 作业共享单个 ssh-agent 进程。默认情况下,keychain 启动的 ssh-agent 是长期运行的,即使您已从系统注销,它仍将继续运行。

我的 zsh~/.zshrc文件中有以下行:

eval $(keychain --eval --agents ssh --quick --quiet)

相关内容