我正在进入 CentOS 6 VPS(来自 Mac 终端)并尝试运行 emacs:
emacs ~/.bashrc &
起初我什么也得不到。然后,我尝试:
export DISPLAY=:0
现在,当我再次尝试 emacs 时,我得到:
Display :0 unavailable, simulating -nw
我错过了什么?
谢谢!
我正在进入 CentOS 6 VPS(来自 Mac 终端)并尝试运行 emacs:
emacs ~/.bashrc &
起初我什么也得不到。然后,我尝试:
export DISPLAY=:0
现在,当我再次尝试 emacs 时,我得到:
Display :0 unavailable, simulating -nw
我错过了什么?
谢谢!
Emacs 试图在远程机器上打开一个窗口,但没有运行X Windows服务器。
尝试使用 启用 X 转发到您的本地计算机ssh -X
,或者在控制台模式下使用emacs -nw
(无 Windows)运行 emacs。
从你的问题中不清楚你是否真的在你的 Mac 上设置了 X 服务器,所以我先解释一下。
为了在图形而不是终端模式下使用 Emacs,您需要一个“X 服务器”。X Window System 是一种标准和协议,它允许程序通过在本地或网络 (TCP) 上的通信通道上发送消息来在显示器上绘图。带有显示器/键盘/鼠标的机器运行X服务器;想要在显示器上绘图的程序(例如 Emacs)称为 X 客户端。
OS X 不附带 X 服务器。你可以从这里得到一个:http: //xquartz.macosforge.org/landing/。苹果曾经包括一个,但他们最近放弃了它。
一旦你在你的 Mac 上运行了 X,你就可以在你的 VPS 上运行 Emacs 并让它在 Mac 上显示。您可以设置 DISPLAY 变量(并调整您的防火墙等)让 Emacs 通过 Internet 直接连接到您的 X 服务器,但这是一个坏主意:X 协议是不安全的,您不想将其暴露给互联网。相反,您可以使用 SSH “X 转发”。ssh -X是ssh -R的一种特殊形式:它设置一个 TCP 端口监听远程主机的环回,并在您登录时设置 DISPLAY 变量以指向此代理。远程端的 X 客户端然后透明地连接到您的本地 X 服务器,通过 SSH 连接建立隧道。
由于网络延迟,远程 X 客户端可能需要几秒钟才能出现在您的显示器上。Emacs 需要特别长的时间才能出现,但我发现它一旦完成,正在进行的操作通常非常顺利。
我安装了 xquartz,现在得到:X11 forwarding request failed on channel 0
当您尝试此操作时,请使用ssh -vv发布您的 SSH 会话的输出。你在 VPS 上安装了xauth程序吗?sshd使用它在服务器端建立一个单独的 X 身份验证令牌(“MIT-MAGIC-COOKIE”)。它拦截初始的 X 协议身份验证消息并替换远程(“欺骗”)令牌;这样可以避免在远程主机上暴露您的本地令牌。
您也可以尝试ssh -Y而不是ssh -X。
我应该添加 echo $DISPLAY (在终端中,在我 ssh 进入 VPS 之前),现在给我这个:/tmp/launch-ZMvHpM/org.macosforge.xquartz:0
这很正常。这是 OS X 用于按需启动服务的一般机制;这是由launchd设置的(我相信),它会在您运行第一个 X 客户端时自动启动 X 服务器。