如何让TRAMP在主机名规范化时读取ssh config中配置的用户名
解决方法
该问题是TRAMP默认自主解析SSH配置时,不支持CanonicalizeHostname主机规范化逻辑导致的:输入短主机名时,TRAMP解析配置阶段还未完成域名补全,匹配不到通配符规则下的User配置,因此触发用户名输入提示。可选择以下任意一种方案解决:
方案一:让TRAMP完全交由系统SSH处理配置(推荐)
添加以下配置到你的Emacs初始化文件(init.el/.emacs)即可:
;; 禁用TRAMP自主解析SSH配置提取参数的逻辑,所有配置交由系统ssh命令处理 (setq tramp-use-ssh-controlmaster-options nil) ;; 可选:如果默认TRAMP访问方式不是ssh,统一设置为ssh (setq tramp-default-method "ssh")
配置生效前可执行M-x tramp-cleanup-all-connections清空现有TRAMP连接缓存,无需重启Emacs即可验证效果。
方案二:手动配置TRAMP默认用户名匹配规则
如果你希望保留TRAMP的配置解析逻辑,可以直接在tramp-default-user-alist中添加对应域名的用户名匹配规则:
;; 匹配所有*.example.com域名的主机,自动使用指定用户名 (add-to-list 'tramp-default-user-alist '("\\`.*\\.example\\.com\\'" "BettaGeorge" nil))
该方案可以直接命中所有同后缀的虚拟机,不需要为每个实例单独配置。
内容的提问来源于stack exchange,提问作者Betta George
相关产品推荐
相关产品推荐

