当我通过 SSH 连接到远程设备时
$ ssh -X remotebox
Run Code Online (Sandbox Code Playgroud)
然后在远程盒子上启动firefox
remotebox$ firefox
Run Code Online (Sandbox Code Playgroud)
并且我在本地机器上运行了 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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
以下命令使用远程 Firefox 窗口启动远程 Firefox 会话。
remotebox$ firefox -no-remote
Run Code Online (Sandbox Code Playgroud)
以下命令会产生一个短暂的延迟,然后返回到提示状态,并弹出一个本地 Firefox 窗口。remotebox 上没有运行 firefox 进程。
remotebox$ firefox
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
remotebox2 上的以下命令按预期启动远程 Firefox 会话。
remotebox2$ firefox
Run Code Online (Sandbox Code Playgroud)
我不知道为什么 remotebox2 上的 firefox 启动远程会话而不是本地会话。
mkm*_*mkm 54
除了firefox -no-remote 另一个参数,firefox -no-xshm它揭示了用于使其工作的技术。
X11 共享内存是一种进程间通信技术,可以被连接到给定 x 服务器会话的所有应用程序使用。它可用于执行拖放和其他类型的桌面交互。
它可以(并且正在)用于实现“一次打开”应用程序,以减少占用空间(或窗口数量)。
由于 X11 协议是网络透明的,因此“共享内存”也扩展到远程 X11 客户端。
小智 12
请注意,我进行了圆顶挖掘,因为这让我很烦恼,您也可以添加:
MOZ_NO_REMOTE=1
export MOZ_NO_REMOTE
Run Code Online (Sandbox Code Playgroud)
到您的个人资料。
如果您想像坐在远程盒子前一样在本地浏览网页:
$ ssh -X username@remote.example.com
Run Code Online (Sandbox Code Playgroud)
然后在远程终端会话中运行 Firefox :
$ firefox https://test-ipv6.com/
Run Code Online (Sandbox Code Playgroud)
-X请注意命令中标志的使用ssh。您也可以一次性完成这两个步骤,如下所示:
$ ssh -X username@remote.example.com firefox http://test-ipv6.com/
Run Code Online (Sandbox Code Playgroud)
如果您有一个远程运行的应用程序公开了某种 Web 前端,您将会有兴趣公开远程 IP:端口,就好像它是本地 IP:端口一样。在这种情况下,该选项定义了和-L之间的对应关系,如下面的伪命令所示:localhost:localportremotehost:remoteport
ssh -L localhost:localport:remotehost:remoteport remoteuser@remotehost
Run Code Online (Sandbox Code Playgroud)
例如:
$ ssh -L 127.0.0.1:18080:internal.example.com:8080 username@router.example.com
Run Code Online (Sandbox Code Playgroud)
然后在本地运行 Firefox :
$ firefox http://127.0.0.1:18080
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,您通过 SSH 连接到username@router.example.com,并且您对暴露于 的 Web 前端感兴趣internal.example.com:8080。此远程 IP:端口将在本地公开127.0.0.1:18080。