如何在无GUI远程Ubuntu的SSH连接中解决Mininet xterm显示问题
解决远程Ubuntu通过PyCharm SSH运行X应用(Mininet xterm、Firefox)的显示问题
1. 确认远程Ubuntu的sshd配置
- 编辑sshd_config:
sudo nano /etc/ssh/sshd_config,确保以下配置项正确:X11Forwarding yes X11DisplayOffset 10 X11UseLocalhost yes - 重启sshd服务:
sudo systemctl restart sshd
2. 正确配置Windows端Xlaunch
- 打开Xlaunch,选择One large window,点击Next
- 选择Start no client,点击Next
- 关键步骤:勾选Disable access control,其余保持默认,点击Next
- 保存配置(可选,方便下次启动),点击Finish启动X服务器
3. 开启PyCharm SSH会话的X11转发
- 打开PyCharm,进入
File > Settings > Tools > SSH Configurations - 选中你的远程Ubuntu连接,点击Edit
- 在Connection标签页底部,勾选Enable X11 forwarding
- 切换到Advanced标签,确认X display设置为
localhost:0.0(或留空让PyCharm自动检测),点击Save
4. 验证远程会话的DISPLAY变量
- 通过PyCharm SSH登录远程Ubuntu后,执行:
echo $DISPLAY - 正常输出应为
localhost:10.0或类似(sshd自动分配的端口),如果显示:0.0或为空,说明X11转发未生效,重新检查上述配置
5. 测试基础X应用
- 先在远程直接运行
xterm,如果能弹出Xlaunch的窗口,说明基础X11转发正常;如果仍报错,回到前几步排查
6. 解决Mininet虚拟主机的xterm显示问题
Mininet的虚拟主机默认不会继承当前会话的DISPLAY变量,需按以下方式处理:
- 方式1:启动Mininet时传递DISPLAY变量:
之后在Mininet CLI中执行sudo DISPLAY=$DISPLAY mnxterm h1即可正常弹出窗口 - 方式2:在Mininet CLI中直接指定DISPLAY运行xterm:
xterm -display $DISPLAY h1
7. 临时权限调试(可选)
如果仍报错,可在远程执行xhost +(临时允许所有X连接,测试用),测试完成后执行xhost -恢复安全设置
内容的提问来源于stack exchange,提问作者Djarlo
相关产品推荐
相关产品推荐

