在自动化配置服务器的时候,需要统一配置 sshd_conf 文件,但是又不想使用诸如 sed
,awk
之类的工具对原文件进行修改。
有一个简单的方案,就是让 sshd 先加载原配置,然后再加载我们的自定义配置,这样自定义配置就可以覆盖原配置的值,就能做到不改动原配置的情况下进行自定义。
下面是具体的操作步骤:
- 创建一个 sshd_config.d 目录用来存放我们自定义的配置
$ mkdir -p /usr/local/etc/ssh/sshd_config.d
- 新建一个 sshd_config 配置文件,里面的内容是先包含原配置然后再包含我们的自定义配置
$ cat << EOF >/usr/local/etc/ssh/sshd_config
Include /etc/ssh/sshd_config
Include /usr/local/etc/ssh/sshd_config.d/*.conf
EOF
- 然后配置 sshd 默认加载我们自定义的 sshd_config
$ sysrc sshd_flags="-f /usr/local/etc/ssh/sshd_config"
在 sshd_config.d 目录中,我们的 custom.conf 只需要写自定义的配置项目就可以了,完全没有 sed
,awk
这类工具使用通配符替换的方式可能在不同版本的系统上不通用的问题。