如何解决如何在NixOS中使用GnuPG代理设置SSH密钥短语缓存?
我正在通过SSH远程使用NixOS(目前处于不稳定通道),因此没有图形环境。我经常推拉Git存储库,并且重新键入SSH密钥的密码短语很快就会变老,所以我试图建立一个代理来缓存密码短语。
在最新版本中,推荐使用带有SSH支持的GnuPG代理。我通过取消注释configuration.nix中的以下行来启用代理:
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
pinentryFlavor = "gnome3";
};
这里pinentryFlavor
的选择重要吗?我在想SSH会通过自己的提示询问密钥,并使用代理对其进行缓存,但是进行确认会很好。正如我所说,我没有使用图形界面。
主要问题:仅通过从configuration.nix启用代理似乎不起作用。显然还需要做其他事情,但是我找不到任何有关如何在NixOS中正确启用代理的文档。
解决方法
全局configuration.nix
设置/etc/bashrc
处的配置,以便在bash启动时调用gpg-connect-agent
,并/etc/set-environment
设置SSH_AUTH_SOCK
环境变量。它还在/etc/systemd/user/gpg-agent*
处添加了系统范围内的每用户systemd单元,这些单元运行每用户GnuPG密钥代理。
最后,您必须确保使用ssh-add
命令将密钥添加到代理。 SSH提示输入密钥密码时,不会自动添加它。
这足以使GnuPG代理与SSH一起使用。 在终端上使用时,事实证明,应该将pinentryFlavor
的选择也不会生效。pinentryFlavor
设置为在终端上使用时进行诅咒。如果您不这样做,则代理在重新认证时会引发错误。
(我不确定为什么第一次启用GnupPG时会遇到各种错误情况。它现在可以使用默认设置。很有可能systemd服务没有正确启动。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。