如何使用 KeePassXC 作为 SSH 代理?

gro*_*taj 13 windows linux ssh ssh-keys keepassxc

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

gro*_*taj 14

SSH 代理在 KeePassXC 文档中有一个专门的部分。最好通读一遍以大致了解其工作原理。如果你不想,这里有一个总结。

KeePassXC 不能作为成熟的 SSH 代理替代品。相反,它与已运行的 SSH 代理进行通信,并根据需要添加或删除 SSH 密钥。

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

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

很简约!

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

将密钥添加到 KeePassXC

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

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

高级选项卡:如果您希望将私钥存储在数据库中,请将其添加为附件(如果您的数据库已以某种方式共享,则对于在系统之间共享非常有用)。

自动类型选项卡:取消选中为此条目启用自动类型

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

浏览器集成选项卡:选中从浏览器扩展中隐藏此条目

Linux

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

此功能大部分应该是开箱即用的,只需在 KeePassXC 设置中启用它即可。

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

如果 KeePassXC 作为软件包安装,SSH 代理将不起作用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-add在窗口中键入内容应作为第一个条目cmd返回。C:\Windows\System32\OpenSSH\ssh-add.exe如果情况并非如此,您必须重新排序您的PATH条目。

您还必须启用代理的服务。打开services.msc并找到OpenSSH Authentication Agent。将其启动类型设置为“自动”,应用并启动它。

不幸的是,21H1 之前的 Windows 10 附带的 SSH 客户端版本存在错误,并且无法使用 RSA 密钥(这已在 21H1 中修补)。如果您运行的 Windows 版本早于 21H1,则必须应用此解决方法:

  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 代理并选中Use OpenSSH for Windows 而不是 Pageant

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

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

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

Windows 上的 Git 问题

msys git(即默认的 Windows 版本的 git)似乎无法与 Windows SSH 代理一起使用。另一方面,git 的代理不能与 Windows 上的 KeePassXC 一起工作(很好)。

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

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