如何防止ssh远程登录破坏dbus?

如何防止ssh远程登录破坏dbus?

我在 KDE 下工作的工作站上运行 openSUSE 11.3,我没有 root 访问权限。默认 shell 已设置为tcsh.当我登录到我的工作站并使用运行 OS X 10.6 的 MacBook 远程登录时ssh,如下所示:

ssh -X -C [email protected]

一切正常;然而,完成后,每当我尝试使用 GUI 启动任何内容时,我的工作站会话都会出现 DBUS 错误,不幸的是,包括任务栏面板中的注销对话框。我已经厌倦了startkde在这种情况下为了注销而杀人。

在网上我发现了很多使用 ssh 连接到现有 dbus 会话的说明,但我想做相反的事情,让现有 dbus 会话完全不受 ssh 远程登录会话的影响。

如果我做

ssh -X -C [email protected] dbus-launch konsole

这是可行的,所以只有交互式登录 shell 会破坏 dbus。我应该如何修改~/.cshrc?请记住,我无权修改/etc/cshrc/etc/login等。

如有必要,我可以在此处列出这些文件的内容。

更新:

这是一个很大的 tar 文件,其中包含我能找到的所有脚本:

http://dl.dropbox.com/u/17203983/cshrc.tgz

答案1

实际上 dbus 会话是针对每台机器和每台 X 显示器的。

当您进行远程 SSH 会话时,您使用不同的 X11 显示(通常为 localhost:10)

如果您杀死所有 dbus 并在 SSH 会话上启动它,它就可以工作......对于 SSH 会话。但显然它会破坏机器中的所有其他 dbus 会话。

需要的是检查机器+显示器的会话是否已经存在,如果是,则使用它,如果不存在,则为该组合启动一个新的 dbus,并让会话知道它。

看着https://unix.stackexchange.com/a/188877/32769 对于 bash 块,您可以放入 $HOME/.bash_profile 文件中进行这些测试并正确执行正确的操作。

相关内容