将密钥添加到 KeePassXC

将密钥添加到 KeePassXC

有一个SSH 代理KeePassXC 选项中的选项卡。如何使用它来管理跨多台 Windows 和 Linux 计算机的 SSH 密钥?

答案1

SSH 代理有一个整个专用部分在 KeePassXC 文档中。最好通读一遍以大致了解其工作原理。如果您不想读,这里有一个摘要。

KeePassXC 并不是一个全面的 SSH 代理替代品。相反,它与已经运行的 SSH 代理进行通信,并根据需要添加或删除 SSH 密钥。

私钥可以完全存储在 KeePassXC 数据库中。或者,您可以将受密码保护的密钥文件保存在文件系统中,并使用 KeePassXC 使用存储在数据库中的密码自动解锁它们,并将其插入代理中。

可以按需添加和删除密钥,也可以在数据库打开/关闭时自动添加和删除密钥。您还可以设置密钥删除超时并启用每个密钥的确认。

很简约!

此设置的一个主要缺点是,在 Windows 上,git 无法与 SSH 代理配合使用。其他操作系统不受影响。请参阅末尾有关此问题、其后果和可能的解决方法的专门部分。

将密钥添加到 KeePassXC

添加新条目。按您的意愿命名。

用户名将用作代理中的密钥名称(ssh-add -l)。如果密钥受密码保护,则密码将用于解锁密钥。

先进的标签:如果您希望将私钥存储在数据库中,请将其添加为附件(如果您的数据库已经以某种方式共享,则这对于系统之间的共享很有用)。

复写选项卡:取消选中为该条目启用自动输入

SSH 代理tab:根据您的喜好配置何时添加和删除密钥。从附件或文件系统中选择您的私钥。

浏览器集成标签:检查在浏览器扩展中隐藏此条目

Linux

我已经在 Pop!_OS 18.04 上进行了测试,它是 Ubuntu 的一个密切相关的分支。

此功能基本开箱即用,只需在 KeePassXC 设置中启用它即可。

用于ssh-add -l检查您的密钥是否已加载(如果您选择手动添加密钥,则可以通过右键单击密钥并选择将密钥添加到 SSH 代理)。

SSH 代理不起作用如果 KeePassXC 是作为snap软件包安装的。如果snap info keepassxc返回了某些内容,则必须删除该snap版本并使用 安装常规版本apt。如果您使用的是 Pop!_OS 并apt安装了比 更旧的版本snap,请参阅此问题:KeePassXC 未升级到 Pop!_OS 上的最新版本

视窗

答案已在 Windows 10 版本 2004 上测试。

首先,您必须使用 Windows 10 附带的 OpenSSH 客户端。在与代理通信方面,它与“裸”OpenSSH 略有不同。确保您已安装 OpenSSH 客户端组件(它是可选的 - 如果您已明确删除它或从旧版本的 Windows 升级,则可能会丢失)。

如果您安装了其他 SSH 客户端(例如 git 自带的客户端),请确保在命令行上使用 Windows 客户端。where ssh-addcmd窗口中输入的内容应返回C:\Windows\System32\OpenSSH\ssh-add.exe第一个条目。如果不是这种情况,您必须重新排序您的PATH条目。

您还必须启用代理服务。打开services.msc并找到OpenSSH 身份验证代理. 设置其启动类型自动的,申请并启动。

不幸的是,Windows 10 自带的 SSH 客户端版本低于 21H1 版本有缺陷并且不适用于 RSA 密钥(这已经已修补在 21H1 中)。如果您运行的是 21H1 之前的 Windows 版本,则必须应用此解决方法:

  1. 停止代理服务。
  2. 下载最新版本的OpenSSH-Win64.zip 来自 GitHub. 将其解压至C:\Program Files\OpenSSH-Win64.
  3. 打开regedit并转到HKLM\SYSTEM\CurrentControlSet\Services\ssh-agent。更改ImagePathC:\Program Files\OpenSSH-Win64\ssh-agent.exe
  4. 启动服务。

现在在 KeePassXC 设置中启用 SSH 代理并检查使用适用于 Windows 的 OpenSSH 而不是 Pageant

用于ssh-add -l检查您的密钥是否已加载(如果您选择手动添加密钥,则可以通过右键单击密钥并选择将密钥添加到 SSH 代理)。

我如何使用我的钥匙~/.ssh/config

在文件系统中保存相应的公钥并在配置中使用它。ssh如果将其添加到代理,将使用来自 KeePassXC 的正确密钥。

Windows 上的 Git 问题

msys git(即 git 的默认 Windows 版本)似乎无法与 Windows SSH 代理配合使用。另一方面,git 的代理无法与 Windows 上的 KeePassXC 配合使用(效果不佳)。

如果你通过 SSH 使用 git 并进行密钥文件验证,则必须采用一种解决方法,即配置 git 使用固定密钥文件而不是代理。要使其工作,您必须将私钥存储在文件系统中,这可能会违背将其存储在 KeePassXC 中的目的。如果您要使用此解决方法,请确保密钥文件受密码保护。KeePassXC 将使用条目的密码值来解锁密钥。对于 git,您每次使用它时都必须手动解锁。

应该可以同时运行 git 的 SSH 代理和 Windows 的代理,但它们不会共享身份。您可以将ssh-add存储在文件系统中的密钥文件的身份转移到第二个代理,以避免每次使用时都重新输入密码。我还没有亲自尝试过这种设置,所以我无法提供确切的说明。

相关内容