2017-04-05 102 views
1

我在我的.emacs以下几点:在Windows上使用plink时,如何更改TRAMP在Emacs中发送的命令?

(require 'tramp) 
(setq tramp-default-method "plink") 

当我在Emacs运行C-x C-f /plink:some_session:/其中some_session在腻子定义会话(其中有所有信息保存,如私有密钥,用户名,连接类型的位置= ssh等),流浪汉发出以下命令(*消息*缓冲区)复制:

Tramp: Sending command ‘plink -ssh -t some_session " env 'TERM=dumb' 'PROMPT_COMMAND=' 'PS1=#$ ' /bin/sh " && exit || exit’ 

你可以看到,它通过-ssh标志plink。一切工作正常,当我连接到一个远程主机,期望ssh连接端口22.

但是,我有一个远程主机,我需要连接到端口2222.如果我保存会话(some_new_session)在腻子并尝试使用以下命令来连接(或腻子GUI),这是发生了什么:

  • 使用腻子GUI
    • 工作正常
  • plink some_new_session
    • cmd.exe发行 - 工作正常,我能够连接
  • plink -ssh some_new_session
    • cmd.exe发布 - 不工作

我已经调试的问题发现时为-ssh标志传递给plink,尽管保存的会话状态使用端口2222,它仍然试图在端口22上连接。本质上,如果给出-ssh,它将忽略保存在会话中的端口(这看起来像一个错误)。

如果我尝试使用C-x C-f /plink:some_new_session:/在Emacs发出的命令连接是:

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

我的问题是:

我怎样才能改变由流浪汉发出的命令,因此不会调用用-ssh标志闪烁?

+1

你试过修改'tramp-methods'来改变它如何调用'plink'吗? – donkopotamus

回答

1

plink方法旨在使用主机名。如果您想要(重新使用)会话,请使用plinkx,如C-x C-f /plinkx:some_session:/C-x C-f /plink:some_new_session:/

+0

这是很好的信息。我不知道plinkx方法,并改变了我的默认方法'(setq tramp-default-method“plinkx”)'以完全避免这个问题! – vab2048

1

我怀疑修改以下内容将解决问题。我在这里设置的值只是“plink”方法的默认tramp-login-args值。

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

(eval-after-load "tramp" 
    '(setf (cadr (assq 'tramp-login-args (cdr (assoc "plink" tramp-methods)))) 
     '(("-l" "%u") ("-P" "%p") ("-ssh") ("-t") ("%h") ("\"") 
      ("env 'TERM=dumb' 'PROMPT_COMMAND=' 'PS1=#$ '") ("/bin/sh") ("\"")))) 
+0

删除'(“-ssh”)'后可以使用。伟大的e-lisp。 – vab2048

相关问题