我在这里完全迷失了。
我发现在我的 keepass 数据库中存储 ssh 私钥(我有很多)。在我有一个带有简单菜单的 bash 脚本之前,该脚本仅使用 ssh -i 并从 .ssh 目录本地获取私有密钥文件。这里的最终目标是建立一个包含密码和私钥的集中可用数据库,以便在不同设备上使用。
我已经将所有 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 Plasma。我已经安装了keeagent插件的keepass2(2.44)。
答案1
我想我现在已经非常一致了。用新靴子进行测试,效果很好。但有一个很大的警告。
我首先编辑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 中的公钥来解决问题。
Host hostname
Hostname IP
User user
IdentityFile ~/.ssh/key.pub
IdentitiesOnly yes
加载所有密钥后,如图所示,ssh-add -l
我可以简单地调用主机ssh hostname
,它会根据配置中调用的公钥选择正确的私钥。
答案2
它不适用于 openSSH 客户端。它设计用于与 PuTTy 或 KiTTy 等 GUI 应用程序一起使用,您可以在其中通过浏览选择密钥文件; Windows 风格。
如果您愿意切换应用程序,也可以安装适用于 Linux 的 PuTTy。这应该以同样的方式工作 - 唯一知道的方法是测试,因为我通过快速搜索找到的所有可用说明都涉及 Windows。