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

通过SSH X11转发运行的应用如何访问AT-SPI2接口?

解决远程X转发应用无法在Accerciser中显示AT-SPI2元素的问题

问题核心是通过ssh -Y远程运行的应用,其AT-SPI2服务默认连接远程机器的D-Bus总线,而非本地总线,导致本地Accerciser无法探测到对应元素。以下是具体解决步骤:

1. 传递本地AT-SPI总线地址到远程会话

先在本地终端(非SSH远程终端)获取当前AT-SPI总线地址:

echo $AT_SPI_BUS_ADDRESS

输出通常类似 unix:path=/run/user/1000/at-spi/bus_0,其中1000是你的本地用户UID(可通过id -u在本地终端查看)。

方式一:手动在SSH终端设置环境变量

在远程SSH终端执行:

export AT_SPI_BUS_ADDRESS=unix:path=/run/user/你的本地UID/at-spi/bus_0

替换你的本地UID为实际数值,之后重启远程应用(比如关闭gnome-calculator后重新启动)。

方式二:SSH连接时自动传递环境变量

该方式无需每次手动设置,更持久:

  1. 在远程机器编辑/etc/ssh/sshd_config,添加一行:
AcceptEnv AT_SPI_BUS_ADDRESS
  1. 重启远程机器的sshd服务:
sudo systemctl restart sshd
  1. 使用以下命令连接远程机器:
ssh -Y -o SendEnv=AT_SPI_BUS_ADDRESS user@host

之后在该会话中运行应用即可。

2. 确保远程机器安装AT-SPI2依赖

如果远程机器未安装AT-SPI2核心组件,执行对应系统的安装命令:

  • Debian/Ubuntu系:
sudo apt install at-spi2-core
  • RHEL/CentOS/Fedora系:
sudo dnf install at-spi2-core

3. 验证本地AT-SPI服务状态

在本地终端检查AT-SPI总线服务是否正常运行:

systemctl --user status at-spi-dbus-bus

如果未运行,启动服务:

systemctl --user start at-spi-dbus-bus

完成以上步骤后,重新运行远程应用,即可在本地Accerciser中看到对应的AT-SPI2元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 02:44:56