如何通过 SSH 启动远程 Firefox 窗口?

les*_*ana 66 ssh firefox

当我通过 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 客户端。


Den*_*son 19

尝试 firefox -no-remote


小智 12

请注意,我进行了圆顶挖掘,因为这让我很烦恼,您也可以添加:

MOZ_NO_REMOTE=1
export MOZ_NO_REMOTE
Run Code Online (Sandbox Code Playgroud)

到您的个人资料。


Ric*_*mes 5

简单的远程浏览

如果您想像坐在远程盒子前一样在本地浏览网页:

$ 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)

建立远程 IP:端口隧道

如果您有一个远程运行的应用程序公开了某种 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