默认情况下 Ubuntu 出于安全考虑禁止 root 密码登录,建议继续使用 sudo 提权;若业务必须,可修改 SSH 配置开启。
先说结论:生产环境不建议开启,测试或特定管理需求可临时开启,操作前务必确保有备用连接方式。
- 适合:特定管理需求或兼容旧脚本
- 先准备:备份 SSH 配置并确保有备用连接方式
- 验收:测试远程登录并检查日志
命令速用版
sudo passwd root
sudo vi /etc/ssh/sshd_config
# 修改 PermitRootLogin yes
# 修改 PasswordAuthentication yes
sudo systemctl restart ssh为什么会这样
Ubuntu 镜像默认禁用 root 密码登录是为了防止暴力破解和误操作。系统预设使用普通用户(如 ubuntu)配合 SSH 密钥认证,再通过 sudo 提权。直接开放 root 密码会增加被扫描攻击的风险,且一旦密码泄露,攻击者将获得最高权限。
分步处理
1. 设置 root 密码
在终端执行以下命令,按提示输入两次新密码:
sudo passwd root2. 修改 SSH 配置文件
使用编辑器打开配置文件,找到以下两行配置项。如果前面有#号,需要去掉注释:
sudo vi /etc/ssh/sshd_config将配置修改为:
PermitRootLogin yes
PasswordAuthentication yes注意:Ubuntu 20.04 中默认可能是 prohibit-password,需改为 yes 才允许密码登录。
3. 重启 SSH 服务
修改配置后需重启服务生效:
sudo systemctl restart ssh如果重启失败,不要关闭当前终端,先检查配置语法:
sudo sshd -t怎么验证是否生效
1. 本地或另一台机器尝试登录:
ssh root@你的实例公网 IP2. 输入设置的 root 密码,若能进入 shell 即成功。
3. 查看认证日志确认登录记录:
sudo tail -f /var/log/auth.log常见坑
1. 配置错误导致无法连接:修改 sshd_config 前务必复制一份备份,例如 cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak。若重启后无法连接,需通过甲骨文云控制台的 VNC 终端恢复配置。
2. 防火墙拦截:甲骨文云实例除了系统内部防火墙,还有控制台的安全列表(Security List)。确保入站规则允许 TCP 22 端口,否则改配置也无法连接。
3. 安全组与 NSG:如果实例关联了网络安全组(NSG),需同时检查 NSG 规则是否放行 SSH 流量。
4. 避免长期开放:业务完成后建议改回 PermitRootLogin prohibit-password 或 no,降低被扫描风险。