如何在 NixOS 中使用 GnuPG 代理设置 SSH 关键字缓存?
How to set up SSH keyphrase caching with GnuPG Agent in NixOS?
我正在通过 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*
处添加了系统范围 per-user systemd 单元 运行 per-user GnuPG 密钥代理。
最后一定要确保使用ssh-add
命令将密钥添加到代理中;当 SSH 提示密钥密码时,它不会自动添加。
这应该足以使 GnuPG 代理与 SSH 一起工作。 pinentryFlavor
的选择在终端上使用时不应该也有影响。 原来你 应该 设置 pinentryFlavor
到在终端上使用时诅咒。如果您不这样做,代理会在 re-authenticating.
时抛出错误
(我不确定为什么我在第一次启用 GnupPG 时遇到各种错误情况。它现在可以使用默认设置。可能是 systemd 服务未正确启动。)
我正在通过 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*
处添加了系统范围 per-user systemd 单元 运行 per-user GnuPG 密钥代理。
最后一定要确保使用ssh-add
命令将密钥添加到代理中;当 SSH 提示密钥密码时,它不会自动添加。
这应该足以使 GnuPG 代理与 SSH 一起工作。 原来你 应该 设置 pinentryFlavor
的选择在终端上使用时不应该也有影响。pinentryFlavor
到在终端上使用时诅咒。如果您不这样做,代理会在 re-authenticating.
(我不确定为什么我在第一次启用 GnupPG 时遇到各种错误情况。它现在可以使用默认设置。可能是 systemd 服务未正确启动。)