Ubuntu20.04 OpenSSH 8.2配置含子目录时ssh自动补全报错求助
报错原因
Ubuntu 20.04 自带的 SSH 自动补全脚本(属于 bash-completion 包)逻辑老旧,不会自动跳过 Include 指令匹配到的目录。你配置中第一行 Include config.d/* 会匹配到 config.d 下的 dir1、dir2、dir3 三个子目录,补全脚本尝试把目录当做文本配置文件读取解析,就触发了 sed/awk 的读目录错误。
解决方案
选以下任意一种调整即可:
方案1:删除顶层通配引用
删掉 ~/.ssh/config 里的第一行 Include config.d/*,只保留子目录层级的引用规则:
Include config.d/dir1/* Include config.d/dir2/* Include config.d/dir3/*
如果你的顶层 config.d 下还有直接存放的配置片段,把这些片段移动到任意子目录中即可。
方案2:给配置片段加统一后缀过滤
如果你需要保留顶层目录的配置片段,给所有 SSH 配置片段加统一后缀(比如 .conf),把所有引用规则修改为只匹配带后缀的文件,彻底避免匹配到目录:
# 仅匹配后缀为.conf的普通文件,不会匹配子目录 Include config.d/*.conf Include config.d/dir1/*.conf Include config.d/dir2/*.conf Include config.d/dir3/*.conf
调整完成后执行 ssh -G remotevm 验证配置加载正常,再尝试 SSH 主机名补全即可恢复正常。
内容的提问来源于stack exchange,提问作者Maxclac
相关产品推荐
相关产品推荐

