使用 gnome-keyring 而不是 ssh-add 的 SSH 密钥

使用 gnome-keyring 而不是 ssh-add 的 SSH 密钥

我不确定我问的是什么,因为我不太清楚这个世界是如何运作的,但是,我有一个使用 VirtualBox 安装的私人 Ubuntu 14.04 服务器,我用它来开发,没有 X 服务器。所以,它在终端领域。

我在终端 ( vboxmanage startvm) 上运行我的私人服务器,并使用 连接到它ssh。在私人服务器中,当我ssh再次需要使用时,我会连接到我的公共服务器。

当我连接到我的私人服务器或使用 ssh 进行任何其他操作时,我只需在整个桌面会话期间输入一次密钥密码。我不知道谁对此负责,但我认为是gnome-keyring-daemon。但在我的私人服务器中,每次使用密钥时(例如,用于连接到公共服务器),我都必须输入密码。我不想使用ssh-agent或 ,ssh-add因为我不想在连接到我的私人服务器时提示,特别是如果我有多个受密码保护的密钥。此外,这是ssh-agent在每个新终端会话上都有一个实例的问题。

已经安装gnome-keyring在我的私人服务器上,但我不知道如何“激活”它来管理我的密钥,以及如何避免每次我想从我的私人服务器内部通过 ssh 连接到我的公共服务器时都被提示输入密码(我有一些脚本可以在一次运行中多次连接到它)。

最后,别忘了私人服务器目前没有桌面,我还没准备好安装它。

答案1

您实际上正在寻找的是ssh-agent。它记住您已使用密码成功解锁密钥的事实,并在您登录时保持其解锁状态。有几种不同的实现,提供了一种,但对于无头服务器,您可以更轻松地直接在 中gnome-keyring调用,或者使用一个包装的应用程序,让生活变得更轻松。ssh-agent.bashrckeychainssh-agent

sudo apt-get install keychainKeychain 应该可以通过Fedora ( dnf)、CentOS ( yum) 或 Arch ( )获得pacman。安装后,您可以添加一行类似于eval $(keychain --eval)您的.bashrc,它将启动并ssh-agent为您的用户保留 1 个运行实例。如果您在后面添加密钥名称,--eval它将在您第一次登录时加载命名密钥,并立即提示您输入密码,然后将它们保存起来。

您可以查看加载了哪些密钥ssh-add -l,并且可以添加一个密钥,ssh-add ~/.ssh/keyname该密钥将仅提示您输入一次密码,然后存储它,直到您注销或钥匙串停止/终止。.bash_logout如果您担心断开连接后密钥仍处于解锁状态,您可以添加一个 kill 命令。

请参阅这个非常好的网站,其中有一些关于 OpenSSH 如何工作的优秀链接和很好的例子,https://www.funtoo.org/Keychain并且无需重复输入密码。

答案2

您无法在无头环境中使用 gnome-keyring。它是为 GNOME 设计的,需要显示 UI 来询问密码。

但是,您可以使用ssh -A连接到该服务器,本地代理将被转发,这样您就不必在服务器上保留私钥,并且每次您希望从该服务器连接到另一台主机时,您都不必重新输入密码(或者您可以从本地计算机而不是服务器连接到这些主机,这将更安全)。这会稍微降低安全性,因为您要提供与本地主机上的 ssh 代理的连接,因此易受攻击的客户端或服务器可能会导致您的密钥被泄露。

相关内容