Linux系统SSH密码设置详解
SSH(Secure Shell)作为Linux系统远程管理的核心工具,其安全性直接关系到整个系统的稳定运行,密码认证作为SSH最基础的认证方式之一,其设置与管理需要遵循规范的操作流程,本文将从密码策略配置、SSH服务修改、密钥对辅助以及安全加固四个方面,详细阐述Linux系统中SSH密码的设置方法与最佳实践。

密码策略配置:构建坚固的第一道防线
在设置SSH密码前,首先需要确保系统整体的密码策略足够安全,通过修改/etc/login.defs和/etc/security/pwquality.conf文件,可以强制用户设置高强度密码。
/etc/login.defs文件中,PASS_MIN_LEN参数定义了密码最小长度,建议设置为至少12位;PASS_MAX_DAYS控制密码有效期,避免长期使用相同密码,而在/etc/security/pwquality.conf中,可通过以下参数细化密码复杂度要求:
minlen=12:密码最小长度12位minclass=3:必须包含数字、大小写字母、特殊字符中的至少3类reject_username:密码中禁止包含用户名
执行passwd命令修改用户密码时,系统会自动根据这些策略进行校验,若需为特定用户设置独立策略,可使用chage命令,例如chage -M 90 username将密码有效期设为90天。
SSH服务配置:精准控制密码认证
SSH服务的密码认证行为由/etc/ssh/sshd_config文件定义,默认情况下,PasswordAuthentication参数为yes,允许密码登录,为提升安全性,需对该参数进行精细化调整。
-
启用或禁用密码认证
编辑sshd_config文件,找到PasswordAuthentication行,根据需求设置为yes或no,若仅允许密钥对登录,可设置为no,此时需确保已配置正确的公钥认证。 -
限制尝试次数
添加MaxAuthTries 3参数,限制每个连接的最大认证尝试次数为3次,有效防止暴力破解。
-
禁用root直接登录
设置PermitRootLogin no,禁止root用户通过SSH直接登录,需先切换至普通用户再提权,降低权限泄露风险。 -
应用配置并重启服务
保存文件后,执行systemctl restart sshd或service sshd restart使配置生效。
密钥对辅助:实现双因素认证
在密码认证基础上,结合SSH密钥对可构建更安全的认证体系,生成密钥对后,将公钥(~/.ssh/id_rsa.pub追加至目标服务器的~/.ssh/authorized_keys文件中,并设置权限为600,可通过PubkeyAuthentication yes启用密钥认证,与密码认证形成双重验证。
若需强制要求用户同时提供密码和密钥,可在sshd_config中设置ChallengeResponseAuthentication yes并启用PAM认证,实现双因素认证(2FA),结合Google Authenticator,用户需输入动态口令才能完成密码认证。
安全加固:动态防御与日志审计
SSH密码的安全管理不仅需要静态配置,还需结合动态监控与日志分析。
-
使用fail2ban防暴力破解
安装fail2ban后,创建/etc/fail2ban/jail.local文件,配置如下:
[sshd] enabled = true port = 22 maxretry = 3 bantime = 3600
该配置将在3次失败尝试后封禁IP地址1小时,有效抵御自动化攻击。
-
定期审计SSH日志
SSH日志默认记录在/var/log/auth.log(Debian/Ubuntu)或/var/log/secure(CentOS/RHEL),通过分析Failed password等关键词,可及时发现异常登录行为,使用grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr命令,可统计高频失败IP并采取针对性措施。 -
定期更换密码
对于必须使用密码认证的场景,建议通过chage -d 0 username强制用户在下次登录时修改密码,并配合/etc/cron.monthly脚本实现定期批量提醒。
Linux SSH密码的安全设置是一个系统工程,需从密码策略、服务配置、多因素认证到动态监控形成闭环管理,在实际操作中,应遵循“最小权限原则”和“深度防御理念”,在保证便捷性的同时最大限度降低安全风险,对于生产环境,建议优先采用密钥对认证,将密码认证作为备用方案,并辅以自动化工具实现持续的安全加固。




















