要让SSH服务记录详细调试日志,需同时配置sshd的LogLevel(推荐VERBOSE,排障时用DEBUG3)和rsyslog路由规则,将sshd日志分离至/var/log/sshd.log,并可选配置logrotate每日轮转保留7天。

要让 SSH 服务记录详细的调试日志,关键不是单纯调高日志级别,而是配合 sshd 的调试模式与 rsyslog 的精细路由规则,把原本只发到 authpriv 的日志分离出来、增强输出粒度。
启用 sshd 的详细日志级别
编辑 /etc/ssh/sshd_config,确保以下两行存在且未被注释:
-
SyslogFacility AUTHPRIV(保持默认即可,用于区分日志来源) -
LogLevel VERBOSE或更详细的LogLevel DEBUG3
DEBUG3 是最高级别,会记录密钥交换、认证尝试每一步(包括失败原因、算法协商细节),但会产生大量日志,仅建议临时排障使用。生产环境推荐 VERBOSE,它能记录登录成功/失败、用户、源 IP、使用的认证方式等关键信息,兼顾可读性与实用性。
将 SSH 日志单独存放到独立文件
直接修改 /etc/rsyslog.conf 或在 /etc/rsyslog.d/ 下新建配置文件(如 20-ssh.conf),添加如下规则:
if $syslogfacility-text == 'authpriv' and $programname == 'sshd' then /var/log/sshd.log-
& stop(防止该日志再重复写入/var/log/secure或/var/log/messages)
保存后执行 systemctl restart rsyslog 生效。这样所有 sshd 日志都会集中到 /var/log/sshd.log,便于排查和审计。
验证日志是否生效并查看实时输出
重启 SSH 服务使配置生效:systemctl restart sshd。然后执行:
-
tail -f /var/log/sshd.log实时观察新连接和认证行为 - 从另一台机器尝试 SSH 登录(成功或失败均可),确认日志中出现对应条目,例如包含
Accepted password for user from 192.168.x.x或Failed password for root from 192.168.x.x
若日志为空,检查 sshd 是否正常运行(systemctl status sshd),并确认 rsyslog 没有报错(journalctl -u rsyslog -n 20)。
可选:限制调试日志的保留周期
为避免 DEBUG3 日志快速占满磁盘,可配合 logrotate 管理。编辑 /etc/logrotate.d/sshd:
/var/log/sshd.log {dailymissingokrotate 7compressdelaycompressnotifempty}
这样每天轮转一次,保留最近 7 天的压缩日志,既保证可追溯性,又控制磁盘占用。











