在甲骨文云控制台为实例所在的子网安全列表添加入站规则,放行 TCP 22 端口,同时必须检查实例操作系统内部防火墙状态,确保两端均放行才能成功连接。
先说结论:通过 VCN 安全列表的入站规则开放 22 端口是基础操作,但直接对全网开放存在被暴力破解风险。
- 先判断:确认实例操作系统内部防火墙未拦截 SSH 服务。
- 优先做:安全列表源 CIDR 尽量填写具体管理 IP,避免使用 0.0.0.0/0。
- 再验证:配置完成后使用 SSH 客户端测试连接,而非仅看控制台状态。
控制台安全列表配置
此配置主要通过甲骨文云控制台完成,核心路径为:登录控制台 -> Networking -> 虚拟云网络 -> 安全列表 -> 添加入站规则。
- 登录甲骨文云控制台,进入Networking菜单下的虚拟云网络 (VCN)。
- 点击实例所属的 VCN,找到安全列表 (Security Lists)栏,点击对应的安全列表名称。
- 在入站规则 (Ingress Rules)区域,点击添加入站规则 (Add Ingress Rules)。
- 填写规则:源类型选 CIDR,源 CIDR 填写管理 IP(严禁使用 0.0.0.0/0,除非临时调试),协议选 TCP,目标端口范围填 22。
- 点击添加入站规则保存,通常秒级生效。
- 修改或删除规则:若配置错误,可在同一页面找到已添加的规则,点击右侧操作菜单选择编辑或删除,修改后即时生效。
实例内部防火墙与 SSH 配置
云控制台放行后,若仍无法连接,通常是因为实例内部防火墙或 SSH 服务配置限制。需登录实例(通过云控制台 VNC 或已有密钥)进行以下检查。
1. 放行内部防火墙
根据操作系统类型执行相应命令:
- Ubuntu/Debian (UFW):
sudo ufw allow 22/tcpsudo ufw reload - CentOS/Oracle Linux (Firewalld):
sudo firewall-cmd `--permanent` `--add-port`=22/tcpsudo firewall-cmd `--reload`
2. 检查 SSH 服务配置
部分镜像默认禁止 root 登录或密码登录,需编辑/etc/ssh/sshd_config 开启 PermitRootLogin 并重启 sshd 服务。
- 编辑配置:
sudo vi /etc/ssh/sshd_config - 确保包含:
PermitRootLogin yes或PasswordAuthentication yes(根据需求开启)。 - 重启服务:
sudo systemctl restart sshd
连接验证与故障排查
在本地终端执行ssh -v -i 密钥路径 opc@实例公网 IP,观察连接日志。
常见错误排查:
- Connection timed out:通常是网络层面拦截。检查安全列表入站规则是否生效,源 IP 是否正确,本地网络是否限制出站 22 端口。
- Connection refused:通常是实例内部问题。检查实例内部防火墙是否放行 22 端口,SSH 服务是否运行(
sudo systemctl status sshd)。 - Permission denied:密钥错误或 SSH 配置禁止了当前登录方式。检查密钥权限(chmod 400)及 sshd_config 配置。
- 全网开放风险:源 CIDR 填 0.0.0.0/0 会让实例暴露在公网扫描下,建议配合 fail2ban 或使用堡垒机,调试完成后立即收紧规则。
参考来源
- Oracle Cloud Infrastructure Documentation, "Security Lists", https://docs.oracle.com/en-us/iaas/Content/Network/Concepts/securitylists.htm