簡體   English   中英

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

[英]How do I change the command sent by TRAMP in Emacs when using plink on Windows?

.emacs中包含以下內容:

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

當我在Emacs中運行Cx Cf /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中使用Cx Cf /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連接類型。 此外,即使會話將其保存為端口2222, -ssh標志也將強制連接通過端口22。

我的問題是:

我如何更改tramp發出的命令,以使其不使用-ssh標志調用plink?

plink方法旨在使用主機名。 如果要(重用)會話,請使用plinkx ,例如Cx Cf /plinkx:some_session:/Cx Cf /plink:some_new_session:/

我懷疑修改以下內容可以解決問題。 我在這里設置的值只是“ plink”方法的默認tramp-login-args值。

nb使用plink的其他標准流浪方法是:“ 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") ("\""))))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM