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

如何在EC2实例上无需手动RDP连接创建.Xauthority文件?

解决Amazon Linux 2 EC2实例无需RDP即可生成.Xauthority文件的问题

问题背景

你在搭载MATE桌面的Amazon Linux 2 EC2实例上,希望通过SSH连接后在实例本地运行GUI程序(如obs-studio),但因缺少.Xauthority文件且指定的DISPLAY对应的X服务器未启动,出现错误:Can't find source path /tmp/.X11-unix/X10: No such file or directory。手动RDP连接后该文件会自动生成,但需要无需手动操作的自动生成方法。

解决方案

方法1:通过User Data自动配置X服务器与.Xauthority

在实例启动的User Data脚本中添加以下内容,确保实例启动时自动启动图形界面并生成授权文件:

#!/bin/bash
# 设置默认启动图形界面
systemctl set-default graphical.target
systemctl start graphical.target

# 等待X服务器完全启动
sleep 10

# 为ec2-user生成.Xauthority文件
su - ec2-user -c '
# 获取当前运行的X服务器DISPLAY编号(通常为:0)
DISPLAY=$(ps aux | grep Xorg | grep -v grep | awk '\''{print $NF}'\'')
if [ -z "$DISPLAY" ]; then
    DISPLAY=":0"
    # 手动启动X服务器(未自动启动时执行)
    startx &
    sleep 5
fi

# 生成授权条目并保存到.Xauthority
xauth generate $DISPLAY . trusted
xauth add $DISPLAY . $(mcookie)
'

方法2:SSH连接后手动生成(适用于已运行的实例)

如果实例已启动,可通过SSH连接后执行以下命令:

# 确认X服务器运行状态,获取正确的DISPLAY编号
ps aux | grep Xorg | grep -v grep

# 假设DISPLAY为:0,生成.Xauthority文件
xauth generate :0 . trusted
xauth add :0 . $(mcookie)

# 导出正确的DISPLAY变量(替换为实际编号)
export DISPLAY=:0

# 运行GUI程序
obs-studio

关键说明

  • 错误中/tmp/.X11-unix/X10不存在,是因为你指定的DISPLAY=:10没有对应的X服务器在运行。MATE桌面默认启动的X服务器通常使用:0,需以实际运行的X服务器编号为准。
  • .Xauthority文件的作用是验证X客户端与X服务器的连接权限,xauth命令用于管理该文件的授权条目。
  • 启动图形界面后,即使关闭RDP连接,X服务器仍会保持运行,后续SSH连接可直接使用已生成的.Xauthority文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 11:34:54