除非有明确的自动化运维或特定软件依赖需求,否则不建议在甲骨文云实例上直接开启 root 远程登录,优先使用默认用户配合 sudo 提权更安全;若必须开启,需修改 SSH 配置并确认安全列表放行 22 端口。
先说结论:生产环境建议保持默认禁用状态,测试或特殊需求开启时需同步配置防火墙与密钥策略
- 先判断:确认是否真的需要 root 直连,多数场景 sudo 即可满足
- 优先做:先备份 sshd_config 配置文件,防止配置错误导致无法连接
- 再验证:修改后保留当前会话,新开窗口测试 root 登录,避免把自己锁在外面
命令速用版
sudo -i
passwd root
vi /etc/ssh/sshd_config
# 修改 PermitRootLogin yes
# 修改 PasswordAuthentication yes
systemctl restart sshd
为什么会这样
甲骨文云提供的公共镜像出于安全基线考虑,默认禁用了 root 用户的密码登录和远程直连权限。默认账户(如 Oracle Linux 的 opc,Ubuntu 的 ubuntu)拥有 sudo 权限,这种设计是为了避免攻击者直接针对 root 账户进行暴力破解,同时保留操作审计痕迹。直接开启 root 登录会暴露最高权限入口,增加实例被入侵的风险。
分步处理
1. 使用默认用户登录实例
使用 SSH 密钥登录甲骨文云提供的默认用户,例如 Oracle Linux 使用 opc,Ubuntu 使用 ubuntu。
2. 设置 root 密码
切换到 root 环境并设置密码,确保密码强度足够:
sudo -i
passwd root
3. 修改 SSH 配置文件
编辑 /etc/ssh/sshd_config 文件,找到以下配置项并修改:
PermitRootLogin yes
PasswordAuthentication yes
注意:如果文件中存在多行相同配置,确保生效的那一行未被注释,且值为 yes。
4. 重启 SSH 服务
应用配置更改:
systemctl restart sshd
5. 检查甲骨文云控制台安全列表
登录甲骨文云控制台,找到实例所在的虚拟云网络(VCN),检查安全列表(Security List)或网络安全组(NSG),确保入站规则允许 TCP 22 端口访问,否则即使服务器配置正确也无法连接。
怎么验证是否生效
不要关闭当前的 SSH 会话,打开一个新的终端窗口,尝试使用 root 账户和密码登录:
ssh root@你的实例公网 IP
如果能成功输入密码并进入命令行,说明配置生效。如果提示 Permission denied,请检查 /var/log/secure 或 /var/log/auth.log 查看 SSH 服务日志。
常见坑
- 把自己锁在外面:修改配置后务必先验证新会话,确认成功再关闭旧会话,防止配置错误导致无法连接。
- 安全列表未放行:服务器内部配置好了,但甲骨文云控制台的安全列表没有放行 22 端口,导致连接超时。
- 密钥认证优先:如果服务器配置了强制密钥认证,密码登录可能依然无效,需确认
PubkeyAuthentication相关设置。 - Fail2Ban 拦截:如果安装了 Fail2Ban 等安全软件,多次密码错误可能导致 IP 被临时封禁。