Linux:xhost: unable to open display ""

本文解决了Xmanager6中Xstart窗口无法正常启动的问题,通过禁用主机访问控制和配置VNC服务器来实现远程桌面连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Xmanager6的Xstart窗口出现问题:

[root@*** database]# xhost +
xhost:  unable to open display ""

解决方法:

[root@*** database]# vncserver

You will require a password to access your desktops.

Password:
Verify:
Would you like to enter a view-only password (y/n)? y
Password:
Verify:

New '***:1 (oracle)' desktop is ***:1

Creating default startup script /root/.vnc/xstartup
Creating default config /root/.vnc/config
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/***:1.log
[root@*** database]# export DISPLAY=localhost:1 
[root@*** database]# xhost +
access control disabled,clients can connect from any host

如果出现:

[root@*** oracle]#  vncserver
bash: vncserver: command not found

请参考:【Linux: bash: vncserver: command not found

使用xshell时,上面的命令返回也可能是这样的:

[root@*** database]# export DISPLAY=localhost:1 
[root@*** database]# xhost +
xhost:  unable to open display "localhost:1"

此时,你在重新打开Xstart窗口:

[root@*** ~]# cd /opt/oracle/
[root@*** oracle]# cd database/
[root@*** database]# xhost +
access control disabled, clients can connect from any host

 

 

如果有写的不对的地方,请大家多多批评指正,非常感谢!

### 解决 Ubuntu 中 `xhost` 无法打开显示 `:0` 的问题 当遇到 `xhost unable to open display :0` 错误时,通常是因为 X11 显示器配置不正确或者权限不足。以下是可能的原因以及解决方案: #### 原因分析 1. **X Server 权限问题** 如果当前用户的权限不足以访问默认的显示器 `:0`,则会抛出此错误。 2. **环境变量未设置** 系统中的 `$DISPLAY` 变量如果没有被正确定义,则可能导致程序找不到对应的显示器。 3. **网络连接问题** 当通过远程方式运行图形界面应用程序时,如果主机和容器之间的通信存在问题,也可能引发该错误[^1]。 --- #### 解决方案 ##### 方法一:检查并修复 `$DISPLAY` 和 `xhost` 确保 `$DISPLAY` 已经正确设置了指向本地显示器: ```bash export DISPLAY=:0 ``` 接着允许特定用户或所有用户访问 X server: ```bash xhost + ``` 上述命令将开放对 X server 的完全访问权。出于安全考虑,在完成操作后可以重新限制访问范围: ```bash xhost - ``` ##### 方法二:验证 X11 转发功能是否启用 对于基于 SSH 进行的操作,确认已启用了 `-X` 或 `-Y` 参数来支持 X11 转发: ```bash ssh -X user@remote_host ``` 这一步骤适用于需要跨机器启动 GUI 应用的情况[^3]。 ##### 方法三:调整 Docker 容器内的 X11 设置 如果是使用 Docker 并希望在其中运行带有图形界面的应用程序,请按照以下步骤执行: 1. 安装必要的工具包(如 macOS 上安装 XQuartz); 2. 获取本机 IP 地址并通过它授权外部设备访问自己的 X server; 3. 启动带参数映射的容器实例以便共享 Unix socket 文件路径。 具体脚本如下所示: ```bash # 步骤 A - 找到当前系统的 en0 接口下的 IPv4 地址 ip=$(ifconfig en0 | grep inet | awk '$1=="inet"{print $2}') # 步骤 B - 开放指定 IP 对应的主机名至 X server 访问列表里去 xhost + $ip # 步骤 C - 创建一个新的名为 'firefox' 的交互式前台模式容器,并挂载所需资源进去 docker run -it --rm \ -e DISPLAY=$ip:0 \ -v /tmp/.X11-unix:/tmp/.X11-unix:ro \ jess/firefox ``` 注意这里假设目标镜像是 `jess/firefox` ,实际应用可根据需求替换其他官方镜像名称。 --- ### 总结 以上方法涵盖了从基础环境配置到高级场景处理的不同层面的技术手段。无论是简单的桌面环境下直接解决问题还是复杂的分布式架构下协调工作流程都能找到合适的应对策略。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值