在Windows上使用plink时,如何更改Emacs中TRAMP发送的命令?

在Windows上使用plink时,如何更改Emacs中TRAMP发送的命令?,emacs,putty,plink,tramp,Emacs,Putty,Plink,Tramp,我的.emacs中有以下内容: (require 'tramp) (setq tramp-default-method "plink") 当我在Emacs中运行C-x C-f/plink:some_session://时,其中some_session是PuTTY中定义的会话(它保存了所有信息,例如私钥位置、用户名、连接类型=ssh等),tramp发出以下命令(从*Messages*buffer复制): 您可以看到它将-ssh标志传递给plink。当我连接到远程主机时,一切正常,该主机需要在端口

我的.emacs中有以下内容:

(require 'tramp)
(setq tramp-default-method "plink")
当我在Emacs中运行
C-x C-f/plink:some_session://
时,其中
some_session
是PuTTY中定义的会话(它保存了所有信息,例如私钥位置、用户名、连接类型=ssh等),tramp发出以下命令(从*Messages*buffer复制):

您可以看到它将
-ssh
标志传递给
plink
。当我连接到远程主机时,一切正常,该主机需要在端口22上进行ssh连接

但是,我有一个远程主机,需要在端口2222上连接。如果我在PuTTY中保存一个会话(
some\u new\u session
),并尝试使用以下命令(或PuTTY gui)进行连接,则会发生以下情况:

  • 使用PuTTY GUI
    • 很好
  • plink一些新会话
    • cmd.exe发布
      -工作正常,我能够连接
  • plink-ssh一些新会话
    • cmd.exe发出的命令不起作用
我已经调试了这个问题,发现当
-ssh
标志传递给
plink
时,即使保存的会话状态为使用端口2222,它也会尝试连接端口22。基本上,当给定
-ssh
时,它会忽略会话中保存的端口(感觉像一个bug)

如果我尝试在Emacs中使用
C-x C-f/plink:some\u new\u 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?

我怀疑修改以下命令可以解决问题。我在这里设置的值只是“plink”方法的默认值

n、 b.使用plink的其他标准tramp方法有:“psftp”、“pscp”和“plinkx”

(装载后评估“不定期”
'(setf(cadr(关联的不定期登录参数)(cdr(关联的“plink”不定期登录方法)))
(“-l”“%u”)(“-P”“%P”)(“-ssh”)(“-t”)(“%h”)(“\”)
(“env'TERM=dumb”“PROMPT\u命令=”“PS1=\$”(“/bin/sh”)(“\”))

plink
方法旨在使用主机名。如果要(重用)会话,请使用
plinkx
,例如
C-xc-f/plinkx:some\u session:///code>和
C-xc-f/plink:some\u new\u session://
,您是否尝试过修改
tramp方法来改变它调用
plink
的方式?这在删除
(“-ssh”)
后可以工作。这是一个很好的信息。我不知道plinkx方法,并已更改了默认方法
(setq-tram默认方法“plinkx”)
,以完全避免该问题!
Tramp: Sending command ‘plink -ssh -t some_new_session " env 'TERM=dumb' 'PROMPT_COMMAND=' 'PS1=#$ ' /bin/sh " && exit || exit’