seahorse-ssh-askpass 的配置损坏

seahorse-ssh-askpass 的配置损坏

seahorse-ssh-askpass在我的 Ubuntu 14.04 (linaro) 上似乎坏了。它将我输入的密码输出回终端 (stdout)。

我不知道配置是怎么损坏的(全新安装,可能顺序错误),但显然它没有完成将 ssh 密钥密码存储在密钥环中的工作。

ssh-add有效,但需要在每次新会话后完成。

因此我需要一些帮助或指点,以便我可以修复我损坏的配置。

更新 1:

有关如何在密钥环中存储 ssh 密钥密码的示例指导:如何在 gnome-keyring 中保存 SSH 密钥密码?

我有一个登录密钥环设置为默认密钥环,受与用户登录相同的密码保护,它在登录时解锁,我的 ssh 密钥列在“安全外壳”部分中。

但是我似乎无法在登录密钥环中创建相关条目,该条目应该被称为“解锁密码:<keyname>”(就像在我的 Ubuntu10.04 框中的情况一样) - 以前只需要运行即可seahorse-ssh-askpass keyfilename创建。

$SSH_AUTH_SOCK包含/tmp/ssh-<some alpha-numeric sequence>/agent.[0-9]{4},则该文件存在且具有权限srw-------

更新2:

好的,现在我已经设法阻止 ssh-agent 启动,没有其他代理正在运行($SSH_AUTH_SOCK未设置)。

如何启动连接到 gnome 密钥环的代理?
似乎终止代理ssh-agent并不是一个好主意:适用于 2.22 之前版本的 Seahorse SSH 代理- 我使用的是seahorse3.10.2 版本,因此大概需要 ssh-agent 才能使密钥环正常工作。那么回到原点:我的密钥密码没有被存储,这到底是怎么回事?

答案1

seahorse-ssh-askpass是一个简单 GUI 应用程序,它会提示输入密码并将其写入标准输出。这是预期行为。没有任何问题。

gnome-keyring-daemon它由、ssh或任何要求您输入密码的方式调用。

要将密钥存储在中gnome-keyring,请打开密钥和密码应用程序并在其中添加密钥。

$SSH_AUTH_SOCK路径/tmp/ssh-<some alpha-numeric sequence>/agent.[0-9]{4}表明连接不是到gnome-keyring,但它在启动过程中被ssh-agent某些脚本覆盖。Gnome-keyring 在 中创建身份验证套接字/run/user/{UID}/keyring/ssh

因此,如果您已经运行了 gnome-keyring,那么您真正想要找出的是谁ssh-agent在您的bashrcprofile或脚本中启动了以及原因。Xsession

答案2

假设您要保存已由 Seahorse 管理的 SSH 密钥的密码,ssh-askpassSeahorse 的当前(Ubuntu 20.10)位置似乎是/usr/libexec/seahorse/ssh-askpass

如果ssh-askpassSeahorse 不位于此位置,您可以使用以下命令找到它:

$ locate ssh-askpass | grep seahorse

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

使用 Ubuntu 20.10 上安装的 Seahorse 版本(Seahorse 3.37.2),运行以下命令:

$ <seahorse_ssh-askpass> <key_path>

似乎可以让 Seahorse 保存 SSH 密钥密码。

如果成功执行该命令,它将弹出一个对话框,列出 SSH 密钥的名称并要求输入密码。在我的情况下,我得到了Vala 错误说它无法抓住键盘,是的,我输入的密码被打印到终端,但是当我的 GNOME 密钥环被解锁时(即当我的电脑开机并解锁时),该命令似乎成功地使该特定的 SSH 密钥自动解锁。

另一个可能对您不起作用的原因是如果您禁用了 GNOME Keyring SSH 代理。它应该默认出现在启动应用程序中,但如果缺少它,您可以通过单击启动应用程序中的“添加”并粘贴以下命令来重新创建它:

/usr/bin/gnome-keyring-daemon --start --components=ssh

至于为什么ssh-askpass从命令行运行似乎是让 GNOME Keyring 保存 SSH 密钥密码的方式(以及为什么似乎没有以其他方式调用此命令),不,我不知道为什么。在直接调用之前,ssh-askpass使用受密码保护的 SSH 密钥会给我一个终端密码提示而不是 GUI 弹出窗口,并且密码不会保存在 Seahorse 中。似乎这种行为可能是由于较新版本的 Ubuntu 的配置问题造成的,因为它确实没有任何意义。

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

相关内容