最稳妥易维护的方式是用 include 指令拆分 ~/.ssh/config:主配置仅设全局参数和 include 行,具体 host 块全放 config.d/ 下按场景分类的子文件中,支持嵌套 include,vscode 和终端均可无缝识别。

用 Include 指令把大而杂的 ~/.ssh/config 拆成多个小文件,是管理几十台服务器配置最稳妥、最易维护的方式。核心就一条:主配置只留全局规则和 Include 行,具体主机配置全扔进子目录里。
主配置只做两件事:设默认行为 + 引入模块
你的 ~/.ssh/config 文件应该极简,类似这样:
- 开头定义所有连接共用的基础参数(比如强制启用
ssh-rsa兼容、开启压缩、保持长连接) - 紧接着用
Include config.d/*.conf一次性加载全部模块 - 不写任何具体服务器的
Host块——它们全在config.d/下面
按用途分目录组织 config.d 子配置
别把所有服务器堆在一个文件里。推荐按场景建子目录或分类命名:
-
config.d/homelab.conf:家用树莓派、NAS、自建服务 -
config.d/aliyun.conf、config.d/tencent.conf:不同云厂商的 ECS 实例 -
config.d/proxy.conf:跳板机或代理节点,供其他主机ProxyJump引用 -
config.d/discard.conf:临时测试用的配置,加个注释说明“仅限本周有效”,避免误连
每个子配置文件专注一类主机,支持嵌套 Include
子文件本身也可以再拆。比如 config.d/homelab.conf 可以这样写:
- 顶部加一段针对所有内网设备的通用设置:
Host 192.168.*或Host *.local - 接着
Include homelab/devices/*.conf加载每台设备的独立配置 - 再
Include homelab/services/*.conf加入 Docker 容器、K8s 节点等逻辑服务入口
这样改某台树莓派的端口,只动一个 devices/rpi4.conf,不影响其他任何配置。
配合 VSCode Remote-SSH 和终端命令无缝生效
VSCode 的 Remote-SSH 插件会自动读取完整 ~/.ssh/config,包括所有 Include 进来的文件。只要结构清晰,你在 VSCode 的连接面板里就能看到所有 Host 别名,选中即连。
- 终端里执行
ssh myserver,OpenSSH 同样按顺序匹配:先看主配置里的通配规则,再逐个加载config.d/中的文件,取第一个匹配的Host块 - 注意:匹配是**从上到下、首个命中即止**,所以通用规则(如
Host *)要放在最前,具体主机别名放后面










