问题描述
当我SSH到远程盒子时
$ ssh -X remotebox
然后在远程盒子上启动firefox
remotebox$ firefox
我在我的本地机器上运行firefox,将打开一个本地firefox窗口。远程盒子上没有运行firefox进程。
如果firefox没有在我的本地机器上运行,那么将打开一个远程firefox窗口。
为什么要打开一个本地firefox窗口?我怎么能防止这种情况?
这里有一些我本地系统的更多信息。
Linux lesmana-laptop 2.6.32-24-generic #42-Ubuntu SMP Fri Aug 20 14:24:04 UTC 2010 i686 GNU/Linux
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 10.04.1 LTS
Release: 10.04
Codename: lucid
DISPLAY=:0.0
Mozilla Firefox 3.6.8, Copyright (c) 1998 - 2010 mozilla.org
remotebox的信息。
Linux dxray 2.6.22.19-0.4-default #1 SMP 2009-08-14 02:09:16 +0200 x86_64 x86_64 x86_64 GNU/Linux
LSB Version: core-2.0-noarch:core-3.0-noarch:core-2.0-x86_64:core-3.0-x86_64:desktop-3.1-amd64:desktop-3.1-noarch:graphics-2.0-amd64:graphics-2.0-noarch:graphics-3.1-amd64:graphics-3.1-noarch
Distributor ID: SUSE LINUX
Description: openSUSE 10.3 (X86-64)
Release: 10.3
Codename: n/a
DISPLAY=localhost:15.0
Mozilla Firefox 3.0.14, Copyright (c) 1998 - 2009 mozilla.org
以下命令启动带有远程firefox窗口的远程firefox会话。
remotebox$ firefox -no-remote
以下命令产生一个短暂的延迟,然后回退到提示符并弹出一个本地firefox窗口。没有firefox进程在remotebox上运行。
remotebox$ firefox
remotebox2的信息。
Linux marvin 2.6.31-22-generic #60-Ubuntu SMP Thu May 27 00:22:23 UTC 2010 i686 GNU/Linux
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 9.10
Release: 9.10
Codename: karmic
DISPLAY=localhost:11.0
Mozilla Firefox 3.6.8, Copyright (c) 1998 - 2010 mozilla.org
remotebox2上的以下命令按预期启动远程firefox会话。
remotebox2$ firefox
我不知道为什么firebox2上的firefox启动远程会话而不是本地会话。
最佳解决思路
除了firefox -no-remote
之外,另一个参数是firefox -no-xshm
,它揭示了使其工作的技术。
X11共享内存是一种进程间通信技术,可供连接到给定x服务器会话的所有应用程序使用。它可以用来执行拖动和放大drop和其他类型的桌面交互。
它也可以(并且)用于实现”open once”应用程序,以减少占用空间(或窗口数量)。
由于X11协议是网络透明的,”shared memory”也扩展到远程X11客户端。
次佳解决思路
试试firefox -no-remote
第三种解决思路
注意,我做了圆顶挖掘,因为这让我烦恼,你也可以添加:
MOZ_NO_REMOTE=1
export MOZ_NO_REMOTE
到你的个人资料
第四种思路
你可以试试这个,当你连接到机器(ssh user@host
;注意:没有-X选项)时,首先输入以下命令
export DISPLAY=:0
这会将默认显示更改为当前桌面屏幕的显示。然后输入
firefox
在桌面窗口中生成firefox。确保您已登录桌面,如果没有登录桌面(无登录),您将收到以下错误;
firefox: cannot connect to X server :0
此方法也适用于锁定的桌面。请确保您已使用相同的用户名登录桌面和ssh shell。
当有多个桌面会话时,每个会话由不同的编号标识为:0
,:1
,:2
等。
第五种思路
没有其他解决方案对我有用,所以这是在对其他网站进行一些搜索之后。
您需要在单独的进程中运行firefox,就像在本地计算机上执行它一样。使用概要文件管理器创建新的概要文件,如下所示。
export MOZ_NO_REMOTE=1
firefox -ProfileManager
为了保持一致,我决定将外部机器上的每个新配置文件命名为与主机名相同。