SSH X11 转发 - 复制、DISPLAY 和“@”符号的问题

SSH X11 转发 - 复制、DISPLAY 和“@”符号的问题

我用来ssh -X user@ip连接到 SSH 服务器(在 LAN 上,100mbit/s 连接)。

效果很好,但存在三个问题:

  1. 一段时间后(不知道确切的时间,大约一个小时左右),当我关闭一个窗口并尝试打开另一个窗口时,我收到错误:Error: Can't open display: localhost:10.0我必须注销并重新登录才能解决此问题。

  2. 我无法打字@。我首先认为这是一个区域设置问题,但区域设置是正确生成的。键盘布局也很合适,其他方面也很!")$(_?不错。

  3. 我可以在我的 PC 上复制一些内容,然后将其粘贴到 X11 转发窗口中,但反之则不然。某物已复制(剪贴板被覆盖),但不可粘贴(尝试粘贴到某些应用程序中会导致应用程序大约一分钟没有响应)。

我已经xauth安装了(两台机器),我使用X11转发的默认设置,服务器是OpenSSH_7.9p1 Raspbian-10+deb10u2, OpenSSL 1.1.1d 10 Sep 2019debian XFCE4,客户端是OpenSSH_8.2p1, OpenSSL 1.1.1f 31 Mar 2020arch GNOME3。

我尝试过xclip -oxsel -o -b但两者都不会打印任何内容并运行,直到我CTRL+C它们为止。

@在 PC 上复制然后将其粘贴到服务器应用程序中即可。

编辑:

(DE 键盘布局):xev在客户端和服务器上显示相同的键码,客户端的 XLookupString 给出@(40),在服务器上给出q(71)。Alt Gr我需要按住的键的事件/代码,@并且两者上的其他所有内容都是相同的。xmodmap两者给出完全相同的结果。

检查 sshd 日志确实给了我一些东西:channel 3: open failed: administratively prohibited: open failed,这显然是相当模糊的。

服务器:X.Org X Server 1.20.4
客户端:X.Org X Server 1.20.8

冗长给了我:Rejected X11 connection after ForwardX11Timeout expired

在网上搜索后我找到了解决办法。设置ForwardX11Timeout为高值可以修复它。将其设置为无限制是显然还不可能。使用-Y代替-X显然也可以解决这个问题,但是似乎不太安全比配置选项。

答案1

1)所以与网络相关的东西停止工作。查看sshd远程计算机上的日志以查找可疑的错误消息。如果您没有找到任何内容,请增加ssh客户端和sshd服务器的详细程度(请参阅有关如何执行此操作的手册页)。

2) 远程X程序连接到你的本地X服务器,但它仍然会使用一些远程设置。所以这并不是真正关于“区域设置”,而是关于键盘 X 设置。从转发开始xev,看看当您在@本地键入时会发生什么(无论您需要在您的区域设置中使用什么组合键,您都没有告诉我们)。xmodmap通过转发也可能有帮助。

3)我不知道这里发生了什么,这需要在X协议级别进行调试。

还要检查本地和远程计算机上的 X 服务器和库是否具有相当接近的版本。如果他们不这样做,请尝试让他们更亲近。 X 线协议非常稳​​定,但是如果你们两个主机在其中的某些内容上存在分歧,这可以解释您的问题。

版本ssh应该不重要,ssh只是透明地转发 X 协议。

相关内容