首页/系统/信创系统运维速查/sshd 配置校验:-t 与 -T
安全加固65 条

sshd 配置校验:-t 与 -T

改 SSH 配置的安全动作:sshd -t 校验语法,sshd -T 输出合并后的最终生效值,避免改了没生效与改错起不来两类问题。

信创系统运维速查系统更新于 2026-10-13

两个参数的分工

sshd -t 做的是配置语法与密钥检查:它把配置文件解析一遍,遇到拼错的指令、缺少的算法实现、损坏的主机密钥就报错退出,是 reload 前的强制动作。sshd -T 则把默认值、主配置与包含目录合并后,输出最终生效的完整配置,用来回答『改了到底生效没有』。带上 -C 指定用户、来源地址等上下文,还能看到 Match 块在该条件下的实际匹配结果。

基本信息

语法校验sshd -t
查看生效值sshd -T(输出为 key value 两列)
按上下文查看sshd -T -C user=、host=、addr=、laddr=、lport=
过滤查看sshd -T 配合 grep,如 permitrootlogin、passwordauthentication
重载方式systemctl reload sshd(保留现有连接)
权限要求root;非 root 执行可能因读取主机密钥失败而报错

典型使用场景

  • 每次修改 SSH 配置后先校验再重载,避免服务起不来
  • 确认 PermitRootLogin 等关键项到底是主配置还是 drop-in 在起作用
  • 验证 Match 块对特定用户与来源是否按预期生效
  • 批量核查多台机器的 SSH 配置是否与基线一致
  • 重载后服务异常时快速定位是哪一行配置引发的

校验命令

校验命令
sshd -t                                  # 语法与密钥检查,无输出即通过
sshd -T | grep -E 'permitrootlogin|passwordauthentication|port|maxauthtries'
sshd -T -C user=ops,host=10.0.0.9,addr=10.0.0.9   # 按上下文查看 Match 匹配后的结果
sshd -T | grep -i -E 'clientalive|allowusers|ciphers'   # 抽查加固项是否生效
systemctl reload sshd                    # reload 只重读配置并保留现有会话

改配置的安全流程

改配置的安全流程
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F)   # 先备份
# 用编辑器修改需要的项
sshd -t || echo '语法错误,先恢复备份再排查'                    # 校验失败不要 reload
sshd -T | grep -i permitrootlogin                              # 确认最终生效值
systemctl reload sshd                                          # 生效
ssh -o PreferredAuthentications=publickey user@localhost true    # 另开会话实测,不要断开当前会话

输出读法与判读

命令与输出含义判读要点
sshd -t 无输出语法与密钥检查通过可以安全 reload
sshd -t 报行号与错误该行语法或取值非法按行号修正后再校验
sshd -T 两列输出最终生效的配置项与值包含默认值与包含文件的合并结果
-T 与主配置不一致被 drop-in 或默认值覆盖到 conf.d 或 Include 目录里找来源
-C 指定上下文后结果不同Match 块对该会话生效按业务需求核对分支逻辑
reload 报错配置或权限问题reload 不影响已建立连接,可退回备份
sshd -t 只覆盖语法层面,语义是否正确(比如 Match 是否真的匹配到目标用户)要结合 sshd -T -C 的输出来看。
远程改配置优先 reload 而不是 restart:reload 保留现有连接,即使新配置有问题也还能用当前会话回退,restart 会断开所有登录。

易错点

  • 改完配置直接 restart 而不先 sshd -t,语法错误导致 sshd 无法启动,远程会话全部中断
  • 只看主配置文件,忽略 conf.d 或 Include 目录里的覆盖项,改了却不生效
  • 用普通用户执行 sshd -T 读取主机密钥失败,把权限问题误判为配置错误
  • 校验通过就认为万无一失,没检查 Match 块在目标用户与来源下的匹配结果,实际生效值与预期不符
  • 改动没有备份,校验失败后只能凭记忆还原,恢复时间被拉长

数据来源与参考

  • man 8 sshd(-t/-T)
  • OpenSSH 官方文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌