我正在尝试从使用 centos 操作系统的服务器上的终端运行 Firefox。每当我输入命令时:
ssh - X hostname firefox
我可以成功打开 Firefox,但无法远程 ssh 到服务器并打开 Firefox。指定 export DISPLAY=:0 并输入“firefox”后,我收到以下错误消息
No protocol specified
No protocol specified
Error: cannot open display: :0
网上有很多关于这个问题的论坛,我尝试过的唯一有用的建议是:
export XAUTHORITY=/home/<user>/.Xauthority
虽然我需要 Firefox 以特定用户身份打开,但它也无法在 root 身份下打开。
答案1
通常情况下,在受信任的网络(即家庭网络等)上,你可以避免
xhost +hostname
这将启用本地显示器的 X11 主机控制。它允许来自远程主机的 X11 连接主机名连接到您的本地 X11 服务器。
请记住,X11 主机控制是一种非常古老的机制,本质上并不安全。它通过 IP 地址或主机名解析提供了一种基本的访问控制方法。这就是为什么你会使用 ssh 连接到远程主机:它加密所有数据并保护点对点连接。
在这种情况下,不需要,因为您的远程环境应该(合理地)设置为允许通过环回设备进行 IP 访问。但此处列出以供参考。
ssh -x remotehostname "DISPLAY=localhost:10.0 firefox"
当 ssh 连接时,如果您指定通过-x
交换机进行 X11 转发,则会在环回连接器(地址 127.0.0.1)上为显示器编号 10 进行绑定(这通常是默认设置,但可以更改)。DISPLAY 环境变量通常用于将 X11 程序的连接转移到其他显示器或机器。
因此,我们有效地设置了环境变量,告诉 Firefox 连接到驻留在 127.0.0.1 上的虚假显示器 10.0,然后 ssh 将通过隧道向后传输到您的本地 X11 显示器。
答案2
尝试小写 x !? 另外,确保“-”和“x”之间没有空格
ssh -x 主机名 Firefox
尝试另一种方法(更冗长的方法,但可能会给你一个更有用的不同错误消息):
originalhost > ssh remotehost remotehost > setenv 显示 originalhost:0
原始主机 > xhost + 远程主机 > firefox