通过 ssh 打开终端运行 Firefox -> 显示未找到

通过 ssh 打开终端运行 Firefox -> 显示未找到

我想在 Hudson 从属服务器上运行 selenium 测试。
执行 selenium 的从属服务器(即机器)是 Ubuntu 10.04。
因此它有 Gnome。Selenium 需要 Firefox 才能运行。

Hudson 现在所做的是,它创建与 Ubuntu 计算机的 ssh 连接并在那里启动 selenium。Selenium 尝试启动 Firefox。

现在它指责:

错误:无法打开显示

需要做什么才能让‘ssh shell’从 X-server 获取显示?

答案1

确保远程机器已启用 ssh X11 转发:

$ grep X11 /etc/ssh/sshd_config 
X11Forwarding yes
X11DisplayOffset 10
$

用于ssh -X user@remote_machine连接到远程计算机。如果在远程计算机上您使用不同的用户启动 X 客户端,请使用xauth list获取 ssh 用户中的当前凭据,然后使用xauth add将凭据添加到您要通过 sudo/su 成为的用户。

read -p 'Username: ' u;sudo -H -u $u xauth add $(xauth list|grep :$(echo ${DISPLAY: -4:2}));sudo su - $u

答案2

如果问题是我认为的

ssh testuser@ubuntuhost firefox --display :0 -no-remote

将在以下位置启动 Firefoxubuntu主机并让它显示在该机器上,假设测试用户登录到ubuntu主机已经。

我不知道 Selenium,也不知道您到底想测试什么(性能、显示的正确性,或者只是某些 javascript 的成功返回值),但您甚至可能不需要“真正的”X 服务器,即实际出现在 Ubuntu 主机监视器上的服务器。Xvfb 可能对您有帮助,但这超出了原始问题的范围……

答案3

您需要启用 X 转发,并在本地运行 X 服务器。将-X-Y传递给ssh

答案4

您需要通过 ssh 隧道转发 X,请尝试以下操作:

ssh -X 主机IP

一旦登录,在您的终端中启动 Firefox,它会将您的 X 服务器转发到您的本地机器。

相关内容