[英]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)進行連接,則會發生這種情況:
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.