4

我正在尝试使用vagrant,Clojureemacs一起使用。具体来说,我无法连接cider到我的vagrant机器。

cider-jack-in当我在我的项目中运行时,它在本地工作。但我不知道在 vagrant 机器上的同一个项目(通过 vagrant 共享文件夹同步)中执行此操作的步骤是什么。

到目前为止,这是我的尝试:

  • ssh vagrant, 那么cd my-project-dir, 那么lein repl
  • 在 emacs 中cider-connect,输入vagrant@192.168.50.50,端口22

我收到以下消息:

SSH 端口转发失败。检查nrepl-tunnel缓冲区。

在该缓冲区内:

OpenSSH_6.2p2, OSSLShim 0.9.8r 2011 年 12 月 8 日 特权端口只能由 root 转发。

进程 nrepl-tunnel 异常退出,代码为 255

我如何以 root 身份运行它?真的是问题吗?我应该使用另一个端口吗?我是否必须在我的 Clojure 代码中添加特定内容才能启用它?这里给出的方向对我来说有点不清楚。

注意:它与这个问题不同,因为emacs在主机上运行,​​而不是在vagrant机器上运行

编辑

感谢@Shlomi的回答,这是我所做的详细步骤:

  • 通过添加以下内容来编辑 .ssh/config(根据您的需要编辑 IP Vagrantfile):

    主机 vagrant HostName 192.168.50.50 端口 22 用户 vagrant ForwardAgent 是

  • 在主机中,使用lein repl. 注意消息中的端口:nREPL server started on port 42018 on host 127.0.0.1 - nrepl://127.0.0.1:42018

  • 在 emacs 中M-x cider-connect,输入 vagrant、您的密码和上一个lein命令记录的端口。

  • 而已 :)

4

1 回答 1

2

您使用的端口似乎是 ssh 端口而不是 nrepl 端口。

我通常使用emacs进行远程访问的方式是通过tramp:

  1. 在 .ssh/config中为您的远程主机添加一个条目,例如vagrant
  2. 在 emacs 中cider-connect,输入vagrant
  3. 在最近版本的 cider 中,它会自动查找该主机上所有活动的 nrepl 会话,并显示它们的项目名称和端口,因此选择正确的,您应该可以开始工作了。
于 2015-07-21T16:06:24.483 回答