ssh X 转发网页浏览器 flash

ssh X 转发网页浏览器 flash

我有一个关于 ssh X 转发的问题。特别是当涉及转发 X 程序时,即某些 Web 浏览器客户端,例如 Iceweasel。

X Server <--(在X客户端上执行的显示Iceweasel的请求)--- X客户端

假设我想在这个 Web 浏览器中执行一些动态内容,例如 Flash 或 Javascript 游戏。

我的问题:它会在X服务器上执行还是在X客户端上执行?

答案1

因此,由于术语的原因,这是一个令人困惑的问题。 X 服务器是与计算机视频硬件交互的进程,并为 X 客户端提供通过 X 协议显示图形的能力。因此,当您通过带有 X 转发的 SSH 连接时,X 客户端位于远程服务器上,而 X 服务器是本地计算机上的进程。

在这种情况下,由于iceweasel在远程服务器上运行(作为X客户端运行),因此flash在远程服务器上执行,但它是通过SSH隧道使用X协议与本地计算机上的X服务器通信。

答案2

X 服务器仅处理显示和键盘/鼠标输入。它不会执行任意代码(这就是 ssh 的用途)。因此,如果您启动 Web 浏览器,flash 和 javascript 将在同一台计算机上执行。浏览器窗口将显示在运行 X 服务器的任何计算机上。对于 X 转发,这通常意味着具有 ssh 服务器的计算机正在运行代码,并且 ssh 客户端正在运行 X 服务器。

答案3

为了将这些事情牢记在心,我始终牢记两个方面。

  1. 有一个软件需要驱动我本地计算机上的图形显示。 (即与我的视频卡对话并在我的显示器上形成形状等)。
  2. 有一些可用的应用程序(例如终端或 Iceweasel)正在运行,需要显示自身。

所以对于X来说一切都是倒退的。服务器是您,客户端(例如 Iceweasel 等应用程序)正在尝试连接到您的 X 服务器。因此,流经 ssh 转发隧道的唯一数据是与 X 客户端与 X 服务器通信相关的数据。与 X 客户端相关的任何内容(Flash、Javascript 等)仍在 X 客户端上运行。

X Server                   X Client                    .-,(  ),-.     
 __  _                    (Iceweasel)               .-(          )-.  
[__]|=|  <------------     __  _       <--------   (    internet     )
/::/|_|       ssh         [__]|=|                   '-(          ).-' 
             tunnel       /::/|_|                       '-.( ).-'     

                    ^    .-----------.
                     \    X Client #2 
                      \   __  _     
                         [__X Client #3
                         /:: __  _     
                            [__]|=|    
                            /::/|_|    

答案4

闪存还将在 SSH 服务器(即 X 客户端)上执行,而不是在 SSH 客户端(即 X 服务器)上执行。 SSH 转发仅发送“输出”,基本上就是您在 SSH 客户端上看到的内容,但它是在服务器上执行的。

这也意味着您不需要在SSH客户端上安装浏览器或flash,安装在SSH服务器上就足够了。

相关内容