应将sshd的loglevel设为verbose以记录详细身份验证行为,包括密钥指纹、认证方式及成败详情,并确保rsyslog或journald正确接收日志,同时启用pubkeyauthentication、passwordauthentication和usepam等选项以完整捕获各类认证事件。

要调整 OpenSSH 日志级别并记录详细的身份验证行为,关键在于修改 sshd 的配置(/etc/ssh/sshd_config),配合系统日志服务(如 rsyslog 或 systemd-journald)确保日志能被正确捕获和保留。
设置合适的 LogLevel
LogLevel 控制 sshd 输出日志的详细程度。默认通常是 INFO,但身份验证细节(如失败原因、密钥指纹、认证方式尝试顺序)需更高级别:
-
VERBOSE:记录每次公钥认证的密钥指纹、键盘交互认证步骤、成功/失败的用户名与来源 IP;比 INFO 多出关键调试信息,适合常规审计。 -
DEBUG、DEBUG1~DEBUG3:逐级增加内部协议交互细节(如加密协商、通道建立),仅用于故障排查,不建议长期启用,存在性能开销与隐私泄露风险(如临时密钥、内存内容片段)。
在 /etc/ssh/sshd_config 中添加或修改:
确保日志输出到可靠位置
OpenSSH 本身不写文件,而是将日志发给系统日志服务。需确认:
- sshd 进程启动时使用了
-E参数(少见)或依赖 syslog;绝大多数发行版默认走 syslog。 - rsyslog(常见于 CentOS/RHEL/Debian)中,
/etc/rsyslog.conf或/etc/rsyslog.d/50-default.conf应包含类似规则:
对于使用 systemd-journald 的系统(如较新 Ubuntu、Fedora),可用以下命令实时查看认证日志:
若需持久化 journal 日志,请确保 /etc/systemd/journald.conf 中设置了:
启用关键认证相关日志选项
仅调高 LogLevel 不够,还需开启具体行为记录:
-
PubkeyAuthentication yes(默认开启):确保公钥认证日志可被记录;关闭则不会记录 pubkey 相关尝试。 -
PasswordAuthentication yes或ChallengeResponseAuthentication yes:对应密码或 PAM 认证行为才会被记录。 -
UsePAM yes(推荐开启):使 PAM 模块(如pam_faildelay.so、pam_tally2.so)也能生成日志,增强失败登录追踪能力。
验证与排查日志是否生效
修改配置后必须重载服务,并主动测试:
- 运行
sudo systemctl reload sshd(或restart)使配置生效。 - 用另一台机器尝试一次失败登录(如输错密码)、一次成功登录(带公钥),再检查日志:
应看到类似条目:
sshd[12345]: Failed password for invalid user admin from 192.168.1.100 port 54322 ssh2sshd[12346]: Accepted publickey for alice from 192.168.1.100 port 54324 ssh2: RSA SHA256:AbC...xyz
若无输出,检查 sshd -T | grep loglevel 确认配置已加载,再查 rsyslog 是否运行、磁盘空间是否充足、SELinux/AppArmor 是否拦截日志写入。










