微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在NixOS中使用GnuPG代理设置SSH密钥短语缓存?

如何解决如何在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服务没有正确启动。)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。