如何让计算机在重新启动之间记住 SSH 密钥密码?

如何让计算机在重新启动之间记住 SSH 密钥密码?

我找到了各种使用 、 等方法来缓存 SSH 密钥密码的ssh-agent解决keychain方案gpg-agent。它们似乎都会在每次登录或每次会话时缓存它,因此每次重新启动计算机时,您都必须重新输入 SSH 密码(但后续 SSH 不会要求您输入密码,直到您重新启动)。

我不希望缓存在重新启动时被清除。我想输入密码一次,并且绝不即使我关闭计算机,也会再次被要求。我怎样才能做到这一点?

如果有必要的话,我会使用 Manjaro。

答案1

我同意@terdon,让计算机记住密码短语相当于没有密码短语。

不过,还有其他选择。将 PAM 配置为使用 ssh 密码而不是密码来登录。这样你只需要输入一个密码就可以了,比较方便。

另外:配置ssh使用多轮加密,这样解密你的密钥需要大约一秒钟的时间,这会让你的密码更短更安全。使用一个好的易于输入、易于记忆、难以猜出的密码。

答案2

侏儒钥匙圈可以存储 SSH 密码并且充当 SSH 代理。确保您正在使用该ssh组件运行 gnome-keyring;环境变量SSH_AUTH_SOCK应指向 gnome-keyring 而不是 ssh-agent。密钥环将包含 SSH 密钥,因此不需要从~/.ssh.密钥环是持久性的,因此向其中添加密钥可以在重新启动后继续存在。一旦解锁 Gnome 密钥环,其所有内容(包括 SSH 密钥)都可供应用程序使用。

答案3

我同时遇到了这个问题这个类似的问题询问 Ubuntu,我在那里发布的修复程序也可能适用于此处。 (我从这里.)

最主要的是,此修复仅适用于您使用 Seahorse(又名密码和密钥)、GNOME 密钥环的 GUI 前端。 Seahorse 在 Ubuntu 和其他 Linux 发行版上默认启用。如果您使用 Seahorse,则可以调用命令行可执行文件ssh-askpass,它会提示您输入给定 SSH 密钥的密码,然后将该密码保存在 GNOME 密钥环中。 (macOS 也有类似的过程,我将在下面介绍 Seahorse 的过程。)

编辑:似乎更重要的事情是进入 Seahorse GUI,单击 OpenSSH 密钥,右键单击有问题的密钥,选择“为安全 Shell 配置密钥...”,然后添加每个服务器和用户名使用密钥。我今天早些时候(在跑步之前)做过这件事,ssh-askpass但完全忘记了。奇怪的是,这部分过程似乎并没有提示输入密码。

要在 Seahorse 中保存 SSH 密钥的密码,请使用以下命令:

$ <seahorse_ssh-askpass> <key_path>

您要确保使用ssh-askpass与 Seahorse 相关的文件,它可能不会在每个系统上都位于同一个位置,但在我的情况下(Ubuntu 20.10)如下:

$ /usr/libexec/seahorse/ssh-askpass <key_path>

如果此可执行位置在您的系统上不起作用,您可以尝试以下操作:

$ locate ssh-askpass | grep seahorse

这将列出ssh-askpass名称和seahorse路径中包含的所有文件和目录。 (您可能需要安装并设置mlocate在您的系统上运行此命令之前。)

SSH 密钥最常见的路径是~/.ssh/id_rsa,但您可以检查 Seahorse GUI 以查看是否是其他路径。就我而言,我使用了以下命令:

$ /usr/libexec/seahorse/ssh-askpass ~/.ssh/alpha_rsa

如果成功执行该命令,将会弹出一个对话框,列出 SSH 密钥的名称并询问您的密码。就我而言,我得到了瓦拉错误说它无法抓取键盘,并且我输入的密码被打印到终端,但是当我的 GNOME 密钥环解锁时,此命令似乎成功地使特定的 SSH 密钥自动解锁。

顺便说一句,如果您不希望这是一个明显的安全漏洞,那么值得确保您的 GNOME 密钥环在您打开计算机时不会在没有密码的情况下自动解锁。就我而言,我有一个带有密码的 YubiKey,在 Linux 启动之前我必须输入该密码。您还需要确保计算机在不使用时自动锁定。但假设您必须输入密码才能启动或登录并解锁计算机(即将其从睡眠状态唤醒),那么保存在 GNOME 密钥环中的任何 SSH 密码都应该与 GNOME 密钥环中的其他任何密码一样安全。

如果您使用的是 macOS,则可以使用类似的过程将 SSH 密钥密码保存在 macOS 钥匙串中,该密码使用用户的登录密码进行加密。

假设您已经在 中设置了 SSH 密钥,您可以通过在终端中输入以下内容来~/.ssh编辑 SSH文件:config

% nano ~/.ssh/config

在文件顶部粘贴以下内容:

Host *
  AddKeysToAgent yes
  UseKeychain yes

您可以使用 SSH 文件执行更多操作config,但我从以下位置获得了此特定配置德里克·拉米雷斯 (Derik Ramirez) 的这篇博文。 (请注意,虽然AddKeysToAgent适用于 macOS 以外的平台,但UseKeyChain不适用于。)

输入 control-o 保存您的 SSH config,然后输入 control-x 退出nano并返回到 shell 提示符。您应该能够config立即使用新的 SSH,并且下次输入 SSH 密钥密码时,它应该保存到您的登录钥匙串中(因此您之后无需再次输入)。

相关内容