我完全迷失在这里。
我发现了在我的 keepass 数据库中存储 ssh 私钥(我有很多)。在我有一个带有简单菜单的 bash 脚本之前,它只使用 ssh -i 并从 .ssh 目录本地获取 priv 密钥文件。这里的最终目标是创建一个集中可用的密码和私钥数据库,以便在不同设备上使用。
从那以后,我将所有 ssh 私钥都放在了我的 keepass 数据库中,我正在尝试弄清楚如何将 keepass/keeagent 与 bash 终端集成。
但是我想我误解了keepass实际上可以做什么。我想要做的是打开我的 keepass 数据库,运行我现有的 bash 脚本并能够以这种方式启动一个 ssh 会话。
我一直在尝试使用 ssh-agent,但实际上我不知道我在那里做什么或它是如何运作的。我在网上找到的所有信息都是通过我上面的步骤或不使用终端的选项进行的。
那么,有没有办法我可以运行这样的命令:ssh -i KEEPASS-DB-PRIVKEY user@ip
或者这不是 keepass/keeagent/sshagent 的能力?
我在 ubuntu 20.04 上使用 KDE 等离子作为桌面。我安装了 keeagent 插件的 keepass2 (2.44)。
我想我现在已经很一致了。用新靴子测试,它可以工作。但有一个很大的警告。
我首先编辑了keeagent选项如下:
Agent
/home/$USER/.ssh-keeagent.sock
然后我将这一行添加到 .bashrc:
export SSH_AUTH_SOCK="/home/$USER/.ssh-keeagent.sock"
我很确定 ssh-agent 会在启动时自动启动(很确定我是偶然这样做的),它正在处理 openssh 的密钥。
这里最大的警告是 ssh 对它已加载的密钥并不聪明。因此,如果您加载了一大堆键并希望它使用列表中的最后一个键,那么最后的服务器会拒绝您,因为您首先尝试使用列表中的所有其他键。我认为这是因为 ssh 无法知道什么密钥与什么 IP 相关联。
也许这可以通过使用 .ssh/config 来避免。但我还没有搞砸。
但是只要加载一个密钥,我就可以打开一个终端并输入
ssh user@IP
它并连接。我什至从keepass 那里得到一个小通知,告诉我在另一个应用程序中使用了一个密钥。如果有人已经有了确保 ssh 仅使用 IP 的特定密钥同时将实际密钥保存在 keepass 数据库中的想法,我很想听听。
看起来我可以通过在 IdentityFile 下的 ~/.ssh/config 中使用公钥来解决问题。
加载所有密钥后,如图所示,
ssh-add -l
我可以简单地调用一个主机ssh hostname
,它会根据配置中调用的公钥选择正确的私钥。它不适用于 openSSH 客户端。它旨在与 PuTTy 或 KiTTy 等 GUI 应用程序一起使用,您可以在其中通过浏览选择密钥文件;窗户风格。
如果你愿意切换应用程序,你也可以安装PuTTy for Linux。这应该以相同的方式工作 - 唯一知道的方法是测试,因为我通过快速搜索找到的所有可用说明都指的是 Windows。