【问题标题】:How do I make TRAMP use the usernames from my ssh config with hostname canonicalisation?如何让 TRAMP 使用我的 ssh 配置中的用户名和主机名规范化?
【发布时间】:2023-04-06 16:44:01
【问题描述】:

我认为这应该是一个非常基本的问题,但谷歌搜索只发现了这里 [1] 上的另一个问题,这没有帮助。

我有一个相当广泛的 ssh 配置。我如何让 TRAMP 尊重它?大多数事情都是开箱即用的,除了用户名,TRAMP 会提示我每台服务器。我希望 TRAMP 停止提示我,只使用我的 ssh 配置中的“用户”条目。有这个设置吗?

编辑:TRAMP 仅在配置使用规范化时提示。也就是说,以下 ssh 配置有效:

Host foo
  HostName foo.example.com
  User BettaGeorge

但是,以下内容会提示我输入用户名:

CanonicalDomains example.com
CanonicalizeHostname yes

Host *.example.com
  User BettaGeorge

为每个主机设置用户名(不带通配符)不是一种选择,因为我管理着一个大型集群,其中偶尔存在短暂的虚拟机。

我已经确认tramp-default-user-alistnil 发生这种情况。

我在 linux 上的 emacs 版本是 27.2,我的 TRAMP 版本是 2.4.5.27.2。

[1]Tramp mode in emacs using ssh config

【问题讨论】:

  • 检查您的tramp-default-user-alist 是否存在冲突条目。 FWIW,我无法重现您的问题。使用像 Michael Albinus 在他的回答中显示的条目(并且在 tramp-default-user-alist 中没有冲突条目),我可以在没有提示和 scpsshsshx 协议中的任何一个的情况下访问远程主机。跨度>
  • 确实,你是对的。我可以让它与最小的 ssh 配置一起工作。但是,只要我添加主机名规范化,TRAMP 就会失败。我已经编辑了我的问题以提供示例。

标签: emacs tramp


【解决方案1】:

如果你有类似的配置

Host xxx
  HostName yyy
  User zzz

应该可以打开/ssh:xxx:。 Tramp 然后使用用户名zzz 和主机名yyy。这对你有用吗?

【讨论】:

  • 我是这么想的,但事实并非如此。 TRAMP 无论如何都会提示我。据我了解文档,这是预期的行为:“注意:TRAMP 将覆盖 Emacs 外部配置文件中指定的任何默认用户,例如 ~/.ssh/config。”引用自 html 文档:gnu.org/software/tramp/#Default-User
  • 您引用的内容仅适用于tramp-default-user-alist 包含与您的~/.ssh/config 中的条目冲突的条目:在这种情况下,alist 条目获胜;但正如文档所述“要阻止 TRAMP 应用默认值,请将相应的 alist 条目设置为 nil”。
  • 您使用的是哪个 Emacs/Tramp 版本?你试过emacs -Q吗?
  • tramp-default-user-alistnil。我已经指出问题不在于用户名本身,而在于主机名规范化。有关详细信息,请参阅我编辑的问题。我还在问题中添加了版本信息。
  • Tramp 没有实现规范化。我会将它添加到 tramp-sh.el 的 TODO 部分,但我不能保证任何实施的截止日期。
猜你喜欢
  • 2014-08-19
  • 2012-08-09
  • 2012-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-11
  • 1970-01-01
相关资源
最近更新 更多