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 代理- 我使用的是seahorse
3.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
在您的bashrc
、profile
或脚本中启动了以及原因。Xsession
答案2
假设您要保存已由 Seahorse 管理的 SSH 密钥的密码,ssh-askpass
Seahorse 的当前(Ubuntu 20.10)位置似乎是/usr/libexec/seahorse/ssh-askpass
。
如果ssh-askpass
Seahorse 不位于此位置,您可以使用以下命令找到它:
$ 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
)做过这件事,但完全忘记了。奇怪的是,这个过程的这一部分似乎没有提示输入密码。