![在 OS X 上通过 SSH 打开 emacs](https://linux22.com/image/1325181/%E5%9C%A8%20OS%20X%20%E4%B8%8A%E9%80%9A%E8%BF%87%20SSH%20%E6%89%93%E5%BC%80%20emacs.png)
[kevin@serverA myFolder]$ emacs sample
emacs: Cannot connect to X server <IP Address>
Check the DISPLAY environment variable or use `-d'. Also use the `xhost'
program to verify that it is set to permit connections from your machine.
xhost+
在 ssh 连接到我的服务器之前我确实运行过。
为什么我无法打开 emacs?
答案1
如果您正在通过 ssh 隧道连接 X,那么 xhost 在这种情况下实际上并不相关。您并没有真正提到您的设置是什么,因此我假设您的显示客户端是 mac,而您的服务器是某种 Linux 机器,并且您正在通过 ssh 进入它。
您是否通过 ssh 会话转发 X11?您可以通过在 ssh 命令行中添加 -X 或在 ~/.ssh/config 中输入“ForwardX11 yes”来执行此操作。完成后,通过运行“printenv DISPLAY”检查服务器上的 DISPLAY 变量(在 ssh 进入之后)。它应该打印类似“localhost:10.0”或类似的内容,其中重要的部分是 localhost 部分。
您的 Mac 上是否安装了 X11?如果没有,请安装。对于 Mountain Lion,您需要下载石英并安装它。对于旧版本,它应该位于安装 DVD 上标记为“可选安装”的文件夹中。
如果设置正确,您的服务器上是否安装了 xauth?尝试在您的服务器上运行 xauth,看看是否收到响应。如果没有,您需要安装它。
如果所有一切正常,您就应该能够在 Mac 上成功显示 X 应用程序。
答案2
你能打开任何其他 X 程序吗?如果你尝试 xclock 会怎么样?命令行默认其 X 显示输出为期望在你远程访问的机器上创建的“显示”。错误会引导你提供转发信息,以便它可以将显示窗口发送到你的本地 X11 系统。如果你的本地系统中还没有运行 X11,那么请跳到本文末尾查看替代方案。
我认为,仅使用 /etc/sshd_config 中的 X11Forwarding 不会自动为您完成转发,这一点与你第一个回答中的讨论一致。因此,请按照指南在这里使用显示命令行选项(每次都必须执行):
emacs sample -display your-actual-hostname-or-ip:0.0
如果所有方法都失败了,请在远程访问时使用纯文本解决方法:emacs -nw sample
如果您使用此方法,请记住,任何东西,甚至菜单都无法点击。您可能需要按 [F8],然后按照基于文本的菜单指南获取菜单选项。可能有一个 .emacs 解决方法。
了解 emacs 后,如果您下载了本地版本的 emacs(我建议使用 xemacs),则可以反过来解决这个问题 - emacs 的 Tramp 模式将启动到远程主机的 ssh 会话并无缝编辑文件。这里有开放的 Stack Exchange类似这样的问题关于从属 ssh shell。以下是有关eshell 和 tramp 模式。在正确的时刻拥有选择权是件好事。