sshd -T 命令的作用与使用方法

话题来源: 搬瓦工忘记 SSH 端口怎么办?Nmap 扫描与 VNC 找回端口教程

当 SSH 端口、密码认证或公钥认证出现异常时,直接翻阅配置文件并不一定能得到答案。sshd -T 的核心作用,是让 SSH 服务以测试模式解析配置,并输出当前实际生效的参数。它会合并主配置文件以及通过 Include 加载的其他配置,因此比只查看某一个配置文件更适合用于故障排查。

查询当前 SSH 端口

通过控制台进入服务器后,可以执行:

sshd -T | grep '^port '

如果输出:

port 38652

就表示当前生效的 SSH 端口是 38652。这里显示的是 sshd 解析后的有效值,而不只是某个文件里写过的值。若系统存在额外配置目录或 Drop-in 配置,后加载的内容可能覆盖主配置文件中的设置;这也是“文件里看见一个端口,实际却监听另一个端口”的常见原因。

确认配置值后,还可以检查 sshd 是否真的在监听该端口:

ss -lntp | grep sshd

如果结果中出现类似 0.0.0.0:38652 的监听记录,说明服务已经绑定该端口。若 sshd -T 显示了端口,但监听状态中没有对应记录,就不能只修改客户端连接参数,还应继续检查 SSH 服务是否运行以及配置是否能正常加载。

查询其他生效配置

sshd -T 不只适合查端口,也适合核对认证策略。例如:

sshd -T | grep '^passwordauthentication '

如果返回 passwordauthentication no,表示 SSH 不接受密码认证;这不会删除系统的 root 密码,也不会影响通过 KiwiVM 或 VNC 控制台使用 root 密码登录。SSH 私钥同样只用于 SSH,不能替代控制台登录凭据。

因此,排查 SSH 连接问题时,应先用 sshd -T 确认端口和认证策略,再结合监听状态、防火墙规则与客户端参数逐项核对。它的价值不在于读取配置文本,而在于回答“sshd 当前究竟采用了什么配置”。

10 条评论

发表回复