为与 Windows 使用同一套配置的 WSL 启用 SSH Multiplexing
之前在 WSL2 挂载用户文件夹 设置过了/etc/fstab,让 Windows 和 WSL 都使用同一套放在 Windows 文件系统下的 ssh_config。
可之前一直留了一个坑,在 Windows 原生 OpenSSH 不支持 SSH ControlMaster 连接复用。所以没有办法在这个配置文件中添加 Multiplexing 的配置(Match exec 有性能上的问题,不采用)。
今天遇到了一个远在天边的 SSH 主机,网络比较慢,想复用同一个 SSH 连接,又想起来了这个功能。
意识到在 WSL 上,实际上会由系统的 /etc/ssh/ssh_config 加载 /etc/ssh/ssh_config.d,我可以在里面去启用设置。这里的设置只会在 Linux 中生效,而且 systemd 也默认创建好了可以用来放 ControlPath 的目录。
sudo tee /etc/ssh/ssh_config.d/90-controlmaster.conf >/dev/null <<'EOF'
Host *
ControlMaster auto
ControlPersist 5m
ControlPath /run/user/%i/ssh-%C
EOF虽然相比直接使用 fstab 共享目录多了一步,但达成了目标,而且较为简洁,设置后基本无需维护。