生产环境应禁用SSH调试相关行为:仅启用Protocol 2,LogLevel设为INFO,关闭GSSAPI、X11与代理转发;精简Ciphers/MACs/KexAlgorithms至安全算法集;限制LoginGraceTime、ClientAliveInterval等参数防暴力与僵尸连接;配置后用sshd -t校验并reload生效。

生产环境服务器上,SSH 的调试功能(如详细日志、协议降级、冗余加密协商等)不是“开关式”功能,而是由配置项隐式控制的。关闭它们的关键是精简协议行为、禁用不安全选项、限制交互方式,而非找一个叫“debug”的服务去关。
停用 SSH 协议调试相关行为
OpenSSH 本身没有独立的“调试服务”,但以下配置若开启,会显著增加攻击面或暴露内部状态,应全部禁用:
-
禁用 SSHv1 协议:Protocol 1 已淘汰多年,存在已知漏洞。在
/etc/ssh/sshd_config中确保只保留Protocol 2,删除或注释所有含Protocol 1的行 -
关闭 Verbose 日志级别:默认
LogLevel INFO足够;避免设为VERBOSE或DEBUG*(如DEBUG1~DEBUG3),后者会在/var/log/auth.log中记录密钥协商细节、失败原因等敏感信息 -
禁用 GSSAPI 认证:GSSAPI(如 Kerberos)在多数生产环境无实际用途,且可能引入额外依赖和日志噪音。添加
GSSAPIAuthentication no和GSSAPICleanupCredentials no -
关闭 X11 转发与代理转发:除非明确需要图形界面或跳转代理,否则设
X11Forwarding no、AllowAgentForwarding no,减少通道滥用风险
收敛加密与密钥协商能力
调试类行为常体现在支持大量弱算法上——攻击者可借此探测服务指纹、发起降级攻击。应显式声明最小安全集:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 运行
ssh -Q cipher、ssh -Q mac、ssh -Q kex查本机支持项,剔除含cbc、sha1、md5、diffie-hellman-group1等关键词的算法 - 在
sshd_config末尾顶格写入三行(不缩进、无空格、不换行):Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.comMACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.comKexAlgorithms curve25519-sha256,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256 - 删掉所有旧的
Ciphers/MACs/KexAlgorithms行,避免叠加生效
限制连接生命周期与交互深度
调试倾向常表现为长连接、多轮重试、空闲挂起等行为。通过超时与次数控制压缩可利用窗口:
-
LoginGraceTime 30:密码输入宽限期从默认 120 秒压至 30 秒,防暴力试探 -
ClientAliveInterval 300且ClientAliveCountMax 2:客户端每 5 分钟发一次保活包,连续 2 次失败即断开,避免僵尸连接堆积 -
MaxStartups 10:30:60:限制并发未认证连接数,防连接耗尽内存 -
UseDNS no:禁用反向 DNS 查询,避免解析延迟暴露内网结构或触发日志冗余
验证与生效
改完配置不要直接 restart,按顺序操作:
- 执行
sudo sshd -t检查语法,无输出即通过 - 执行
sudo systemctl reload sshd(非 restart),保持已有连接不断 - 新开终端连接,加
-vv参数观察协商过程:ssh -vv -o ConnectTimeout=5 user@host—— 确认日志中kex:、cipher:行匹配你设定的算法,且无debug1:类调试输出 - 检查
journalctl -u sshd -n 50 --no-pager,确认无DEBUG级别日志出现

















