1. 为什么需要配置AWS EC2的用户密码登录?
默认情况下,AWS EC2实例采用密钥对(Key Pair)方式进行SSH登录,这是云计算平台推荐的安全实践。但在某些特殊场景下,我们可能需要启用传统的用户名+密码登录方式:
- 多用户协作场景:当需要临时授权其他团队成员访问服务器,但又不想分发密钥文件时
- 自动化工具兼容:部分遗留系统或工具可能仅支持密码认证方式
- 紧急救援通道:当密钥文件意外丢失时作为备用登录方式
- 教学演示环境:在培训场景下简化登录流程
重要提示:密码认证方式的安全性低于密钥对,建议仅在必要时启用,并确保使用强密码(12位以上,包含大小写字母、数字和特殊字符)。
2. 详细配置步骤解析
2.1 初始连接与root账户准备
首先需要通过AWS管理控制台使用默认密钥对连接到实例:
bash复制ssh -i "your-key.pem" ubuntu@your-instance-public-ip
连接成功后,我们需要为root账户设置密码:
bash复制sudo passwd root
这个命令会提示你输入并确认新密码。请务必记住这个密码,它将作为root账户的登录凭证。
2.2 SSH服务配置调整
切换到root身份进行后续配置:
bash复制su root
然后编辑SSH服务配置文件:
bash复制vi /etc/ssh/sshd_config
需要修改以下关键参数:
| 原配置 | 修改为 | 作用说明 |
|---|---|---|
#PermitRootLogin prohibit-password |
PermitRootLogin yes |
允许root账户登录 |
PasswordAuthentication no |
PasswordAuthentication yes |
启用密码认证 |
UsePAM yes |
UsePAM no |
禁用PAM认证模块 |
2.3 服务重启与应用配置
修改完成后,需要重启SSH服务使配置生效:
bash复制sudo service sshd restart
为确保所有配置正确加载,建议最后重启整个实例:
bash复制sudo reboot
3. 多用户密码配置实践
3.1 为默认用户设置密码(如ubuntu)
如果需要保留使用默认用户(如ubuntu)的密码登录能力:
bash复制su root
passwd ubuntu
同样需要输入并确认新密码。这个密码将独立于root密码。
3.2 创建新用户并设置密码
要创建全新的系统用户:
bash复制adduser newusername
passwd newusername
系统会提示设置并确认密码,还可以补充用户信息(可选)。
4. 安全增强措施
虽然启用了密码登录,但仍需采取以下安全措施:
-
防火墙配置:
- 限制SSH端口(默认22)的访问IP范围
- 考虑修改默认SSH端口
-
Fail2Ban安装:
bash复制sudo apt-get install fail2ban sudo systemctl enable fail2ban sudo systemctl start fail2ban -
密码策略强化:
- 修改
/etc/login.defs设置密码有效期 - 安装libpam-cracklib强制密码复杂度
- 修改
-
定期审计:
bash复制sudo lastlog # 查看用户最后登录时间 sudo grep 'Failed password' /var/log/auth.log # 检查失败登录尝试
5. 常见问题排查
5.1 修改后无法登录
如果配置后无法通过密码登录,检查以下方面:
- 确认
sshd_config修改已保存 - 检查SSH服务状态:
sudo systemctl status sshd - 查看日志获取详细错误:
sudo tail -f /var/log/auth.log
5.2 权限问题
遇到权限拒绝错误时:
bash复制sudo chmod 600 /etc/ssh/sshd_config
sudo chown root:root /etc/ssh/sshd_config
5.3 连接超时
如果出现连接超时:
- 检查AWS安全组是否允许SSH端口(默认22)
- 确认实例公有IP没有变化
- 验证网络ACL没有阻止连接
6. 最佳实践建议
- 密钥优先原则:日常操作仍建议使用密钥对登录,密码登录仅作为备用方案
- 定期轮换密码:每3个月更换一次服务器密码
- 最小权限原则:不要随意赋予用户root权限
- 监控登录尝试:设置警报通知异常登录行为
- 备份配置:修改前备份原始配置文件:
bash复制sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
在实际生产环境中,我通常会保留密钥登录作为主要方式,同时配置Google Authenticator实现双因素认证,这样既保持了便利性又增强了安全性。对于必须使用密码登录的场景,建议设置IP白名单限制,大幅降低暴力破解风险。