当我通过 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
遥控器信息。
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 窗口。remotebox 上没有运行 firefox 进程。
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
我不知道为什么 remotebox2 上的 firefox 会启动远程会话而不是本地会话。
除了
firefox -no-remote
另一个参数,firefox -no-xshm
它揭示了用于使其工作的技术。X11 共享内存是一种进程间通信技术,可以被连接到给定 x 服务器会话的所有应用程序使用。它可用于执行拖放和其他类型的桌面交互。
它也可以(并且现在)用于实现“打开一次”应用程序,以减少占用空间(或窗口数量)。
由于 X11 协议是网络透明的,“共享内存”也扩展到远程 X11 客户端。
尝试
firefox -no-remote
注意,我做了圆顶挖掘,因为这让我很烦,你也可以添加:
到您的个人资料。
你可以试试这个,当你连接到机器时(
ssh user@host
; 注意:没有 -X 选项),首先输入以下命令这会将默认显示更改为当前桌面屏幕的显示。然后只需键入
在桌面窗口上生成 Firefox。确保您已登录桌面,否则(没有登录)您将收到以下错误;
此方法也适用于锁定的桌面。请确保您已使用相同的用户名登录桌面和 ssh shell。
当有多个桌面会话时,每个会话由不同的数字标识,如
:0
、:1
、:2
等。简单的远程浏览
如果您想像坐在远程盒子前一样在本地浏览网页:
然后在远程终端会话中运行 Firefox :
注意命令中
-X
标志的用法。ssh
您也可以一次完成这两个步骤,如下所示:隧道远程IP:端口
如果你有一个远程运行的应用程序暴露了某种 web 前端,你会对暴露远程 IP:port 感兴趣,就好像它是一个本地 IP:port。在这种情况下,该
-L
选项定义了 和 之间的对应关系localhost:localport
,remotehost:remoteport
如下面的伪命令所示:例如:
然后在本地运行 Firefox :
在上面的示例中,您通过 SSH 连接到
[email protected]
,并且您对暴露在 的 Web 前端感兴趣internal.example.com:8080
。此远程 IP:port 将在本地公开127.0.0.1:18080
。其他解决方案都不适合我,所以这是在其他网站上进行了一些搜索之后。
您需要在单独的进程中运行 Firefox,就像在本地计算机上执行所有操作一样。使用配置文件管理器创建一个新配置文件,如下所示。
为了保持一致,我决定将外部机器上的每个新配置文件命名为与主机名相同。
我只会添加对我有用的东西。简单地使用
firefox -no-remote
失败并出现通常的错误但是,以下工作:
该
-Y
选项启用受信任的 X11 转发。受信任的 X11 转发不受 X11 SECURITY 扩展控制的约束。您也可以考虑在命令中添加-C
选项以ssh
启用压缩。