如何在Emacs中结合使用SSH、SUDO和TRAMP

如何在Emacs中结合使用SSH、SUDO和TRAMP,emacs,ssh,sudo,tramp,Emacs,Ssh,Sudo,Tramp,可能重复: 我想在远程机器上使用sudo(比如,/etc/hosts)打开一个文件,该机器通过ssh在Emacs上使用TRAMP连接 我尝试了两种选择,但都不奏效。有人能告诉我怎么做吗 谢谢你在最近的Emacsen和Unix中,它非常简单,只需访问一个文件(C-x C-f)并以ssh://server:/file 如果您使用的是Windows,请首先安装Putty并将其放入PATH环境变量中。然后,当您访问文件时,请使用plink://server:/file而不是ssh://server:/

可能重复:

我想在远程机器上使用sudo(比如,/etc/hosts)打开一个文件,该机器通过ssh在Emacs上使用TRAMP连接

我尝试了两种选择,但都不奏效。有人能告诉我怎么做吗


谢谢你

在最近的Emacsen和Unix中,它非常简单,只需访问一个文件(
C-x C-f
)并以
ssh://server:/file

如果您使用的是Windows,请首先安装Putty并将其放入PATH环境变量中。然后,当您访问文件时,请使用
plink://server:/file
而不是
ssh://server:/file

编辑:


此答案错误,请参见下面的答案。

在.emacs中使用以下内容

(set-default 'tramp-default-proxies-alist (quote ((".*" "\\`root\\'" "/ssh:%h:"))))
然后您可以简单地键入:

C-x C-f /sudo:root@host[#port]:/path/to/file

它将要求您输入访问远程shell的密码,然后再次输入访问sudo的密码。

这不需要他以root身份进行身份验证吗?默认情况下,ssh将使用您当前的用户名。您可以使用
ssh://username:password@服务器:/file
但是每次输入密码都会变得非常繁琐,所以我建议设置公钥身份验证(然后就是
ssh://username@服务器:/file
)。它以“用户名”的形式访问该文件,但现在的问题是,如果该文件由远程计算机上的root用户拥有,如何保存该文件。例如,在Ubuntu安装中,无法(默认情况下)以root用户身份登录,因此您必须以“username”身份访问文件,然后将其另存为root用户。是否以root用户身份登录到远程服务器?这将以用户身份登录您,然后运行sudo。无需允许根目录的ssh;)我试过你的建议和另一个建议(在这里提到的重复线程中:),但它们都不起作用。看来你的tramp版本不对。使用此解决方案:如果您正在对您的
tramp默认代理列表执行其他操作,您可能希望使用
add to list
而不是
set default
。通过SSH和Sudo使用Emacs复制:文件请参阅此处的文档:但答案确实有效。尝试以下操作: