【问题标题】:How can I use Emacs tramp to ssh to a remote host and edit a file as another user on an ad-hoc basis?如何使用 Emacs tramp ssh 到远程主机并临时以另一个用户身份编辑文件?
【发布时间】:2011-12-11 13:57:57
【问题描述】:

/multi 曾经为我工作,现在它消失了,我很沮丧。

我想做的是,在我的梦想世界里:

/myuser@remotehost:sudo:anotheruser:/some/path/to/file

...并且有 ido 模式的工作。

这里的关键是 'myuser'、'remotehost' 和 'anotheruser' 都是非常临时的,我使用大量远程主机,通常有不同的用户和 sudo 到各种不同的用户。

我需要添加什么以及如何在不反复重新加载 emacs 的情况下对其进行测试?

【问题讨论】:

标签: emacs ssh sudo tramp


【解决方案1】:

截至this commit,TRAMP 再次支持 ad-hoc 多跳。

粗略地说,你是这样使用它的:

/ssh:transituser@remotehost|sudo:user@remotehost:/some/file

我还没有让它与ido-mode 可靠地工作,这很遗憾,但总比没有好! :-)

【讨论】:

  • 包含在 Emacs 24 中,供任何想知道的人使用。另请参阅stackoverflow.com/a/16408592/324105
  • 确认这在 Emacs 24.3 上对我有用,不需要特殊配置。澄清一点:如果您的 是在 ~/.ssh/config 中定义的别名(带有主机),那么在两个地方都使用 的本地别名 - 您不需要转换为 true sudo 的主机名。你也可以用它来做dired/dired+来打开远程目录和eshell。
【解决方案2】:

以下代码可能会有所帮助:

  (defun find-file-as-root ()
    "Find a file as root."
    (interactive)
    (let* ((parsed (when (tramp-tramp-file-p default-directory)
                     (coerce (tramp-dissect-file-name default-directory)
                             'list)))
           (default-directory
             (if parsed
                 (apply 'tramp-make-tramp-file-name
                        (append '("sudo" "root") (cddr parsed)))
               (tramp-make-tramp-file-name "sudo" "root" "localhost"
                                           default-directory))))
      (call-interactively 'find-file)))

我的 .emacs 文件中有它,它似乎来自这里:http://atomized.org/2011/01/toggle-between-root-non-root-in-emacs-with-tramp/

我没有广泛使用它,但似乎这是朝着正确方向迈出的一步。

【讨论】:

    猜你喜欢
    • 2011-12-20
    • 2013-04-03
    • 1970-01-01
    • 2011-01-14
    • 2019-09-29
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    相关资源
    最近更新 更多