【发布时间】:2017-04-05 23:53:41
【问题描述】:
我的 .emacs 中有以下内容:
(require 'tramp)
(setq tramp-default-method "plink")
当我在 Emacs 中运行 C-x C-f /plink:some_session:/ 时,其中 some_session 是 PuTTY 中已定义的会话(其中保存了所有信息,例如私钥的位置、用户名、连接类型 = ssh 等),tramp 发出以下命令(从 *Messages* 缓冲区复制):
Tramp: Sending command ‘plink -ssh -t some_session " env 'TERM=dumb' 'PROMPT_COMMAND=' 'PS1=#$ ' /bin/sh " && exit || exit’
您可以看到它将-ssh 标志传递给plink。当我连接到期望端口 22 上的 ssh 连接的远程主机时,一切正常。
但是,我有一个远程主机需要连接到端口 2222。如果我在 PuTTY 中保存会话 (some_new_session) 并尝试使用以下命令(或 PuTTY gui)进行连接,就会发生这种情况:
- 使用 PuTTY GUI
- 工作正常
-
plink some_new_session- 由
cmd.exe发布 - 工作正常并且能够连接
- 由
-
plink -ssh some_new_session- 由
cmd.exe发布 - 无效
- 由
我已经调试了这个问题,发现当-ssh 标志传递给plink 时,即使保存的会话状态使用端口2222,它仍然会尝试连接端口22。基本上当给定-ssh 时它会忽略保存在会话中的端口(感觉像一个错误)。
如果我尝试在 Emacs 中使用 C-x C-f /plink:some_new_session:/ 进行连接,发出的命令是:
Tramp: Sending command ‘plink -ssh -t some_new_session " env 'TERM=dumb' 'PROMPT_COMMAND=' 'PS1=#$ ' /bin/sh " && exit || exit’
我实际上不需要-ssh 标志,因为 SSH 的连接类型保存在 PuTTY 会话中。 -ssh 标志也强制连接通过端口 22,即使会话已将其保存为端口 2222。
我的问题是:
如何更改 tramp 发出的命令,使其不调用带有 -ssh 标志的 plink?
【问题讨论】:
-
您是否尝试过修改
tramp-methods来改变它调用plink的方式?