You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Azure Bastion连接Linux VM时遇X11 DISPLAY变量相关错误求助

解决Azure Bastion连接Linux虚拟机时的X11 DISPLAY错误

核心原因

Azure Bastion的SSH连接默认未启用X11转发,单纯手动设置DISPLAY变量无法建立与X11服务器的连接,必须先完成X11转发的配置,再确保DISPLAY变量被正确设置。

解决步骤

1. 本地启动X11服务器

要显示Linux虚拟机上的图形界面,本地机器必须运行X11服务器:

  • Windows系统:使用Xming、VcXsrv等工具,启动时勾选No Access Control选项(允许远程连接)。
  • macOS系统:安装XQuartz,打开后在偏好设置的“安全性”标签下勾选允许来自网络的客户端。
  • Linux系统:默认已自带X11服务器,确保桌面环境正常运行即可。

2. 通过Bastion启用X11转发

方式一:Azure门户连接

在Azure门户中使用Bastion连接虚拟机时,展开“连接设置”,勾选启用X11转发选项后完成登录。

方式二:命令行连接

使用Azure CLI结合SSH命令,带X11转发参数连接:

ssh -X <虚拟机用户名>@<虚拟机IP> -o ProxyCommand="az network bastion ssh --name <Bastion名称> --resource-group <资源组名称> --target-resource-id <虚拟机资源ID> --% -p %p"

替换命令中的<>占位符为实际信息,-X参数用于启用X11转发。

3. 验证虚拟机的SSH配置

登录虚拟机后,检查SSH服务是否允许X11转发:

  1. 查看sshd_config配置文件:
    cat /etc/ssh/sshd_config | grep -E "X11Forwarding|X11UseLocalhost"
    
  2. 确保输出包含:
    X11Forwarding yes
    X11UseLocalhost yes
    
  3. 如果配置不符,编辑文件并重启SSH服务:
    sudo nano /etc/ssh/sshd_config
    sudo systemctl restart sshd
    

4. 确认DISPLAY变量并测试

登录后无需手动设置DISPLAY,正常情况下X11转发会自动设置该变量:

  • 查看变量值:
    echo $DISPLAY
    
    正常输出类似localhost:10.0或localhost:11.0。
  • 测试X11连接:运行xclock或xeyes,如果本地弹出对应的图形窗口,说明转发正常。

5. 针对Java应用的额外配置

如果是Java应用报错,可在启动命令中显式指定X11参数:

java -Djava.awt.headless=false -Ddisplay=$DISPLAY YourApplication.jar

常见排查点

  • 如果echo $DISPLAY为空,说明X11转发未成功启用,检查Bastion连接时是否勾选了X11转发,或命令行是否带了-X参数。
  • 如果测试工具(xclock)报错,检查本地X11服务器是否允许远程连接,防火墙是否拦截了X11端口(默认6000+DISPLAY后缀,比如DISPLAY为10.0对应端口6010)。

内容的提问来源于stack exchange,提问作者Christian Townsend

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 03:55:20