我正在尝试从我的 mac(安装了 Xquartz)连接到 ubuntu 服务器。我使用-Y
ssh 选项。当我通过 ssh 连接到服务器并运行任何图形应用程序(例如 xclock)时,我收到以下错误
$xclock
Could not find ':' in DISPLAY: 1
Error: Can't open display: localhost:10.0
在 sshd_config 中设置 X11 转发
$ grep -i X11Forward /etc/ssh/sshd_config
# Setting X11Forwarding to "yes" permits encrypted X connections.
X11Forwarding yes
和,
$ echo $DISPLAY
localhost:10.0
有人能在这方面帮助我吗?
答案1
我在这里给出一个通用答案,因为其他人可能很难在 Mac 上设置 X 转发。我认为在您的具体情况下,请尝试从 XQuarts 运行 ssh,而不是从终端运行它。还要确保您已在服务器调整完成后重启sshd。
在 OS-X 上运行 X 应用程序的先决条件:
- 你需要石英安装在客户端(通过运行 XQuarts 并启动本地终端来检查它是否适用于你的帐户)
- 您需要在服务器上允许 XForwarding。设置 X11Forwarding 选项(最常见于
/etc/ssh/sshd_config
):(X11Forwarding yes
编辑 sshd_config 文件后,请不要忘记重新启动 ssh 服务器)。 - 您的 sshd 服务器应该在服务器端运行。
- 您的防火墙(两端)应允许通过端口 22 进行通信。
通过 ssh 运行 X:
- ⌘通过启动 XQuartz 并按+来启动 XQuartz 终端n
- 在终端输入:(
ssh -X [username]@[servername]
您也可以使用-Y
代替-X
) - 您应该已登录到您的服务器。
xeyes
例如,尝试让 X 回头看看您。
故障排除:
- “连接被拒绝”:检查您的防火墙设置(两端),并检查 ssh 服务器(sshd)是否在接收端运行。
- $DISPLAY 错误:ssh 应该负责设置 $DISPLAY 变量。如果您从 XQuartz 运行,这意味着(出于某种原因)ssh 无法设置 Xforwarded 会话。检查日志文件中的任何错误(特别是在服务器端),并尝试使用详细输出
-v
或甚至-vv
或的 ssh-vvv
来寻找线索)。不要自己篡改 $DISPLAY 设置,因为它是影响ssh 无法建立隧道,而不是原因。