我正在使用 登录到远程服务器ssh -x
,然后运行xterm
。每当尝试运行键盘铃时,我都会收到以下消息并且 xterm 退出:
xterm: warning, error event received:
X Error of failed request: BadAccess (attempt to access private resource denied)
Major opcode of failed request: 104 (X_Bell)
Serial number of failed request: 468
Current serial number in output stream: 469
昨晚我回家时一切都运行正常,今天早上我回来时却出现故障。据我所知,什么都没有改变。
我尝试过在本地和远程关闭铃声 ( xset b off
)。远程关闭时,我收到类似的错误,但对于X_ChangeKeyboardControl
。本地关闭时,xterm
仍会因相同的错误而退出。
我查看了我的系统,没有找到xconf.d
目录。
uname -a
返回以下内容:
Linux <node-name> 4.18.0-16-generic #17~18.04.1-Ubuntu SMP Tue Feb 12 13:35:51 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
答案1
(布拉德福德的回答是正确的,但要扩展他所写的内容)
这是默认 ssh 客户端配置对 X11 转发的限制所致。如果您有访问权限,请将ForwardX11 yes
和添加ForwardX11Trusted yes
到系统/etc/ssh/ssh_config
,这将默认为系统上的所有用户启用所需的行为。
否则,ssh -Y
在连接到相关主机时调用。
ssh_config(5) 手册页对该设置的描述如下ForwardX11
:
转发X11指定 X11 连接是否将自动通过安全通道和 DISPLAY 设置重定向。参数必须是“yes”或“no”。默认值为“no”。
应谨慎启用 X11 转发。能够绕过远程主机上的文件权限(针对用户的 X11 授权数据库)的用户可以通过转发的连接访问本地 X11 显示。如果同时启用了 ForwardX11Trusted 选项,攻击者可能能够执行诸如按键监控之类的活动。
ssh_config(5) 手册页对该设置的描述如下ForwardX11Trusted
:
ForwardX11可信如果此选项设置为“是”,远程 X11 客户端将可以完全访问原始 X11 显示。
如果将此选项设置为“否”,则远程 X11 客户端将被视为不受信任,并被阻止窃取或篡改属于受信任 X11 客户端的数据。此外,用于会话的 xauth(1) 令牌将设置为 20 分钟后过期。在此时间之后,远程客户端将被拒绝访问。
默认值为“否”。
有关对不受信任的客户端施加的限制的完整详细信息,请参阅 X11 SECURITY 扩展规范。
我在连接到 Redhat Linux 服务器(服务器)的 FreeBSD 13.1 系统(客户端)上验证了该问题并进行了修复。
注意 sshd_configX11Forwarding
默认启用。
答案2
我遇到了这个问题。
我相信解决方法是您还需要通过使用选项而-Y
不是或在文件中-X
使用来启用“受信任的”X11 转发。ForwardX11Trusted yes
.ssh/config