远程 emacs 客户端连接,但不在终端中创建新框架

2024-01-29

我以 TCP 模式配置并启动了 emacs 服务器:

  1. Added (setq server-host "10.16.184.33") and (setq server-use-tcp t)到 .emacs
  2. ran emacs --daemon

在同一主机上,运行emacsclient -t在当前终端中调出一个 emacs 框架,并运行emacsclient -c正如预期的那样,显示了一个新的图形客户端框架。

在不同的主机上,运行emacsclient -t -f ~/.emacs.d/server/server似乎成功连接到远程 emacs 服务器,但终端中没有创建框架:

$ emacsclient -t -f ~/.emacs.d/server/server
emacsclient: connected to remote socket at 10.16.184.33

此时,emacsclient 正在前台运行,按 Ctrl-c 并用 SIGTERM 停止它。

的价值server-client变量显示远程 emacs 客户端已连接:

server-clients's value is
(#<process server <10.16.184.33:52710>> #<process server <10.16.177.8:59460>>)

我检查过的事情:

  • Emacs 和 emacsclient 版本:全部 24.3
  • 当交换服务器和远程客户端的机器时,会发生同样的问题,除了......
  • emacsclient 打印额外的错误消息

    emacsclient: connected to remote socket at 10.16.177.8
    *ERROR*: Could not open file: /dev/pts/26
    

还有什么需要检查或配置的想法吗?


您无法“检查或配置”任何内容。你根本无法使用emacsclient远程,因为两个进程共享框架,由于显而易见的原因,该框架不能远程工作。

如果客户端连接到 Emacs 服务器,它实际上并不创建框架本身。相反,它只是告诉服务器要创建哪种框架,即是 GUI 框架还是终端框架。然后,服务器根据客户端的请求和参数创建帧。

具体来说,如果是 TTY 客户端(即emacsclient -t) 服务器尝试在客户端的 TTY 上创建帧。显然,如果服务器运行在不同的系统上,这将不起作用。 TTY 是本地的,无法远程访问。

仅供参考,Emacs 服务器的“TCP 模式”从来就不是用于远程访问的。它只是针对不支持本地 Unix 套接字的系统(即 Windows)的一种解决方法。

你甚至不想尝试让它发挥作用,因为它非常不安全。作为本地协议,Emacs 服务器既不支持流量加密,也不支持身份验证。通过运行可远程访问的 Emacs 服务器,您允许任何其他系统在您的计算机上执行任意 Emacs Lisp.

远程使用 Emacs 的正确方法是 SSH。在远程系统上设置SSH服务器,然后通过SSH连接到系统并启动emacsclient -t在远程 shell 中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

远程 emacs 客户端连接,但不在终端中创建新框架 的相关文章

随机推荐