![如何手动触发 ssh 添加对话框?](https://linux22.com/image/816706/%E5%A6%82%E4%BD%95%E6%89%8B%E5%8A%A8%E8%A7%A6%E5%8F%91%20ssh%20%E6%B7%BB%E5%8A%A0%E5%AF%B9%E8%AF%9D%E6%A1%86%EF%BC%9F.png)
在我的系统(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
),但从您的问题来看,您可能已经得到了它。