![如何防止ssh远程登录破坏dbus?](https://linux22.com/image/19563/%E5%A6%82%E4%BD%95%E9%98%B2%E6%AD%A2ssh%E8%BF%9C%E7%A8%8B%E7%99%BB%E5%BD%95%E7%A0%B4%E5%9D%8Fdbus%EF%BC%9F.png)
我在 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 文件,其中包含我能找到的所有脚本:
答案1
实际上 dbus 会话是针对每台机器和每台 X 显示器的。
当您进行远程 SSH 会话时,您使用不同的 X11 显示(通常为 localhost:10)
如果您杀死所有 dbus 并在 SSH 会话上启动它,它就可以工作......对于 SSH 会话。但显然它会破坏机器中的所有其他 dbus 会话。
需要的是检查机器+显示器的会话是否已经存在,如果是,则使用它,如果不存在,则为该组合启动一个新的 dbus,并让会话知道它。
看着https://unix.stackexchange.com/a/188877/32769 对于 bash 块,您可以放入 $HOME/.bash_profile 文件中进行这些测试并正确执行正确的操作。