如何手动触发 ssh 添加对话框?

如何手动触发 ssh 添加对话框?

在我的系统(Ubuntu 11.10 Unity)上,在命令行中运行ssh-add不再能正确解锁 ssh 密钥。即使在我运行 ssh-add 之后,当我 ssh 到服务器时,也会弹出一个对话框要求我输入 ssh 密钥密码。之后一切正常。

ssh-agent正在运行。当我第一次登录时:

$ ps -ef | grep ssh-agent
mish      1853  1818  0 18:55 ?        00:00:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session /usr/bin/gnome-session --session=ubuntu

如何才能正确解锁 ssh 密钥,而不必 ssh 到服务器?(手动触发 ssh 密钥对话框窗口可以作为一种解决方案,但我不知道如何做到这一点)。

我的用例是使用多路复用器并希望设置多个 ssh 连接。因此我希望解锁 ssh 密钥。否则所有 ssh 密钥对话框都会弹出,我必须多次输入密码。或者我可以在启动 tmuxinator 之前 ssh 到某个地方,但这里的连接速度很慢,所以这只会增加麻烦。因此我希望在启动 tmuxinator 之前解锁 ssh 密钥,而不必先 ssh 到某个地方。

编辑

刚刚尝试注销并重新登录。然后我做了:

$ env | grep -i ssh
SSH_AGENT_PID=8693
SSH_AUTH_SOCK=/tmp/keyring-Ho4cfE/ssh
$ ssh-add -D
All identities removed.
$ ssh-add -l
1024 b8:12:34:56[...]:19 name@computer (DSA)
$ ssh-add
Enter passphrase for /home/name/.ssh/id_dsa: 
Identity added: /home/name/.ssh/id_dsa (/home/mish/.ssh/id_dsa)
$ ssh-add -l
1024 b8:12:34:56[...]:19 /home/name/.ssh/id_dsa (DSA)
1024 b8:12:34:56[...]:19 name@computer (DSA)
0 mish@mishtop:~$ ssh server

此时,GUI 对话框再次要求我输入密码。令人沮丧...

有趣的是,在“所有身份已删除”之后,ssh-add -l仍然显示身份。这让我很困惑。而且似乎只有一个 ssh-agent 在运行。

编辑2:

我在启动板上发现了一个关于此的错误:https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/841672

然而,这个问题是关于寻找一种解决方法,而不是问为什么它不起作用,所以我希望这个问题能够成立。

编辑3:

没什么不寻常的/etc/ssh/ssh_config- 我没有碰过它。我确实有一个,~/.ssh/config但那只是端口和用户名。

当对话框弹出时,我观察了正在运行的进程,发现它是/usr/lib/gnome-keyring/gnome-keyring-prompt-3由启动的,/usr/bin/gnome-keyring-daemon --daemonize --login我尝试从终端启动提示,但什么也没发生。所以仍然卡住了。

答案1

这不是对上述问题的直接回答,而是针对核心问题的解决方法:

停止 gnome-keyring ssh-agent 的启动。然后 ssh-agent、ssh-add 和 ssh 就可以按预期工作了。(或者至少和我预期的一样)。

要停止 gnome-keyring ssh-agent 启动,请执行以下操作:

sudo mv /etc/xdg/autostart/gnome-keyring-ssh.desktop /etc/xdg/autostart/gnome-keyring-ssh.desktop.disabled

答案2

编辑

这确实会启动一个图形提示,要求我输入 ssh 密码,但与实际允许 ssh 使用 ssh 密钥的提示不同。即使在我完成此操作后,我仍然会弹出一个 GUI 提示,要求我输入 ssh 密钥密码 :/

请参阅上面问题中的编辑 3 以了解更多信息。

原来的

我最终找到了一种触发它的方法。我创建~/bin/gssh-add并放入了以下内容:

SSH_ASK_PASS=/usr/bin/ssh-askpass ssh-add

然后我使其可执行:

chmod +x ~/bin/gssh-add

然后我使用 Alt+F2 启动它。这会触发 gnome 对话框。

请注意,如果您gssh-add从终端运行,它将不会触发 gnome 对话框。请参阅ssh-add 手册页的 ENVIRONMENT 部分了解详细原因。

答案3

或者我可以在启动 tmuxinator 之前在某个地方 ssh,但是这里的连接很慢,所以这只会增加阻力。

不要忘记你的'某处' 不需要是远程的:

ssh localhost

我通常就是这么做的。

(然后我^D在新的 shell 提示符下输入以将其丢弃并返回到旧的提示符。如果您不介意额外的击键,则类似的命令ssh localhost true是一个更整洁的替代方法。)

当然,这只适用于请求 SSH 密钥的系统(例如使用后ssh-copy-id),但从您的问题来看,您可能已经得到了它。

相关内容