在CentOS系统中,SSH(Secure Shell)是管理员进行远程管理和服务器维护的核心工具,默认情况下,SSH要求用户提供密码或密钥进行身份验证,这是保障系统安全的第一道防线,在某些特定场景下,如自动化脚本部署、临时测试环境或某些特殊应用集成,管理员可能会考虑配置允许空密码登录,尽管这种配置在技术上可行,但它带来了巨大的安全风险,必须被极其谨慎地对待。

空密码登录的巨大安全隐患
允许SSH使用空密码登录,相当于将服务器的钥匙直接挂在了门上,任何能够扫描到服务器SSH端口(默认为22)的攻击者,都可以无需任何凭证轻易地尝试登录,这种做法会直接导致以下严重后果:
- 自动化攻击的温床:互联网上充斥着大量的自动化扫描机器人,它们会不间断地扫描IP地址段,寻找开放SSH端口的服务器,一旦发现允许空密码登录,它们会立即入侵,将其植入恶意软件、变成僵尸网络的一部分,或进行加密货币挖矿。
- 毫无防御能力:暴力破解攻击依赖于尝试各种密码组合,如果密码为空,攻击者无需任何尝试,一次“尝试”即可成功登录,这使得所有基于密码复杂度的防御措施形同虚设。
- 违反安全基线:任何正规的安全规范、合规性要求(如PCI-DSS、等级保护)都会明令禁止使用空密码,启用此功能将直接导致系统不符合安全标准。
如何配置空密码登录(不推荐)
尽管强烈不建议,但了解其配置方法有助于理解SSH的工作原理并进行故障排查,配置过程涉及修改SSH服务的主配置文件。
修改SSH配置文件:
使用文本编辑器打开/etc/ssh/sshd_config文件,找到#PermitEmptyPasswords no这一行,删除行首的 号(取消注释),并将no修改为yes,如下所示:PermitEmptyPasswords yes确保用户密码为空:
仅仅修改配置文件是不够的,还必须确保目标用户的密码确实为空,可以使用passwd命令配合-d参数来删除指定用户的密码,要删除用户testuser的密码:
sudo passwd -d testuser
重启SSH服务:
为了让配置生效,需要重启SSH服务,在CentOS 7及以上版本中,使用以下命令:sudo systemctl restart sshd
完成以上步骤后,testuser 就可以通过SSH使用空密码登录了,但请再次强调,这是一个极其危险的操作,仅在完全隔离和受控的临时环境中方可考虑。
更安全的替代方案:SSH密钥认证
为了兼顾便利性与安全性,SSH密钥认证是业界公认的最佳实践,它使用一对加密密钥(公钥和私钥)进行身份验证,无需输入密码,且安全性远高于密码。
- 工作原理:私钥保存在客户端计算机上,必须妥善保管,公钥则放置在服务器上,登录时,服务器使用公钥向客户端发起一个挑战,只有持有对应私钥的客户端才能正确应答,从而完成身份验证。
- 配置步骤:
- 在客户端生成密钥对:
ssh-keygen -t rsa -b 4096。 - 将公钥复制到服务器:
ssh-copy-id user@your_server_ip。 - 登录服务器,修改
/etc/ssh/sshd_config,确保PubkeyAuthentication yes已启用。 - 为了最大化安全,可以禁用密码认证:将
PasswordAuthentication设置为no。
- 在客户端生成密钥对:
SSH安全配置最佳实践对比
为了更直观地理解安全配置的差异,下表列出了关键配置项的推荐值与不安全值的对比。

| 配置项 | 不安全设置 | 推荐设置 | 说明 |
|---|---|---|---|
PermitEmptyPasswords | yes | no | 禁止空密码登录,这是最基本的安全防线。 |
PasswordAuthentication | yes | no | 禁用密码验证,强制使用更安全的SSH密钥。 |
PermitRootLogin | yes | no 或 prohibit-password | 禁止直接root登录,降低被攻击后的风险。 |
相关问答FAQs
解答:这个问题通常由以下几个原因导致,请确认您已经使用 passwd -d username 命令彻底删除了该用户的密码,而不仅仅是配置文件中的设置,检查 /etc/ssh/sshd_config 文件中 PasswordAuthentication 的值,如果它被设置为 no,那么即使 PermitEmptyPasswords 为 yes,空密码登录也会被拒绝,因为空密码被视为密码认证的一种,某些PAM(可插拔认证模块)的安全策略可能会在系统层面阻止空密码登录,此时需要检查PAM的配置文件(如 /etc/pam.d/system-auth)。
问题2:除了SSH密钥,还有哪些方式可以增强SSH登录安全?
解答:除了使用SSH密钥替代密码外,还有多种有效手段可以加固SSH服务,第一,可以实施双因素认证(2FA),例如通过Google Authenticator等工具,在密码或密钥验证的基础上增加一个动态验证码,第二,利用防火墙(如firewalld或iptables)限制SSH端口的访问来源,仅允许信任的IP地址连接,第三,部署fail2ban等入侵防御软件,它能自动监控日志,识别并封禁多次尝试失败登录的恶意IP地址,有效抵御暴力破解攻击,将这些措施与SSH密钥结合使用,可以构建起非常坚固的SSH安全防线。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复