xterm 无法在 Mininet 主机内打开。没有 SSH,没有 VM

xterm 无法在 Mininet 主机内打开。没有 SSH,没有 VM

我刚刚安装Ubuntu17.10,以及迷你网2.2.2 来自sudo apt-get install mininet我笔记本电脑上的软件包 ( )。本机,即真实机器上的真实操作系统,禁止任何类型的虚拟机。该笔记本电脑是 2017 年款 MacBook Pro 13 英寸,不带触控条(MacBookPro14,1),Ubuntu 在快速 USB 密钥上运行;只是为了完整性而写的,我认为这并不相关。

我需要对我要创建的每个 Mininet 主机进行 CLI 访问,以便运行自定义测试并观察每个节点中通过的流量。

在我以前的笔记本电脑上,我有一个类似的设置,但使用的是旧版本的 Ubuntu,可能还有 Mininet,我设法能够xterm从我想要的每个 Mininet 主机生成 s。问题是,我完全不记得我是怎么做到的 =)。

echo $DISPLAY返回:0我是否在常规 shell 或 Mininet 主机中运行它,但在常规 shell 中xterm打开一个 xterm 窗口。假设h1是我的 Mininet 主机。我使用以下命令启动 Mininet sudo mn,然后得到:

  • h1 echo $DISPLAY-->:0
  • xterm h1--> 什么也没有,什么也没有发生
  • h1 xterm &--> 什么也没有,什么也没有发生
  • h1 xterm-->No protocol specified. Warning: This program is an suid-root program or is being run by the root user. The full text of the error or warning message cannot be safely formatted in this environment. You may get a more descriptive message by running the program as a non-root user or by removing the suid bit on the executable. xterm: Xt error: Can't open display: %s

我能找到的所有信息都与使用 ssh 的 X11 转发有关,但我尝试过的所有方法都失败了。

任何想法?

答案1

以非超级用户身份在终端中运行xhost +local:以修复此问题。详情如下。


出现此问题的原因在于,出于安全原因,当以超级用户身份进行身份验证时,xterm 默认不起作用(Mininet 必须以超级用户身份运行)。

您可以在正常登录后在终端中运行xterm和来检查这是否是您的问题(如果您之前做过类似的事情,则此检查毫无意义)。如果打开但没有打开,则需要运行sudo xtermsudo suxtermsudo xterm

xhost +local:

sudo xterm现在应该可以正常工作,在 Mininet 中也是如此。这是因为使用该命令,您为以或 身份h1 xterm运行的应用程序提供了图形服务器访问。sudosu

每次重启后该设置都不会保留,但可以使用 恢复xhost -

请注意,这样做意味着系统或网络上的任何用户无需身份验证即可访问您的 $DISPLAY(https://wiki.archlinux.org/index.php/Xhost)。

相关内容