
一:甲骨文SSH连接后,上传文件失败
甲骨文默认禁止root直连,你用的普通用户(如opc/ubuntu)不是系统目录的属主,往/var/www、/usr/local这类目录上传文件自然会失败。
方法一:切换到root
su -i
方法二:修改目录权限
sudo chmod -R 777 /etc/ssl
这允许任何人写入,用完建议改回 755
sudo chmod -R 755 /etc/ssl
方法三:更改目录属主
sudo chown -R 你的用户名 /目标/路径
二、装好了网站却打不开
甲骨文Ubuntu 镜像虽然没装 UFW,但系统内核自带 iptables 防火墙,并且甲骨文的镜像里预置了一些默认拒绝规则,这就导致即使你在云控制台放行了端口,流量还是被系统挡住了。
第一步:检查并临时开放 iptables
请通过 SSH 连接到服务器,然后执行以下操作:
查看当前规则,确认是否有拦截:
sudo iptables -L -n
如果看到类似 Chain INPUT (policy DROP) 或 REJECT 的字样,说明系统防火墙确实在拦截流量。
临时开放所有流量(用于快速测试,判断是否为此问题):
设置默认策略为允许
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
清空所有现有规则
sudo iptables -F
执行完这几条命令后,立即在本地浏览器尝试访问你的网站。如果能打开了,那就确认是 iptables 的问题,可以继续看下面的”持久化保存”步骤。如果还不行,请跳到第二步继续排查。
二.持久化保存规则(防止重启后失效):
Ubuntu 的 iptables 规则重启后会丢失,需要安装工具来保存。执行以下命令:
安装保存工具
sudo apt update && sudo apt install iptables-persistent -y
保存当前规则(刚才已设为 ACCEPT)
sudo netfilter-persistent save
一个小提示:如果你希望更精细地控制,只开放特定端口(比如 80 和 443),可以用下面的命令代替上面的”开放所有”:
先清空规则
sudo iptables -F
允许 SSH(22端口),非常重要!否则你可能断连
sudo iptables -A INPUT -p tcp –dport 22 -j ACCEPT
允许 HTTP(80)和 HTTPS(443)
sudo iptables -A INPUT -p tcp –dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp –dport 443 -j ACCEPT
最后设置默认拒绝其他入站流量
sudo iptables -P INPUT DROP
三、安装 iptables-persistent 后反而又连接不了,因为它自动加载了之前保存的旧规则,覆盖了你之前清空后的临时规则
步骤 1:立即清空所有 iptables 规则
设置默认策略为 ACCEPT
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
清空所有规则
sudo iptables -F
sudo iptables -X
清空 NAT 表(如果有)
sudo iptables -t nat -F
sudo iptables -t nat -X
清空 mangle 表
sudo iptables -t mangle -F
sudo iptables -t mangle -X
执行完后,立即在本地浏览器测试网站能否打开。如果还是打不开,再执行:
彻底清空所有链
sudo iptables -F INPUT
sudo iptables -F OUTPUT
sudo iptables -F FORWARD
步骤 2:验证规则已清空
sudo iptables -L -n
应该看到类似这样的输出(所有链都是 ACCEPT,且没有规则):
text
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
步骤 3:保存当前清空后的规则(重要!)
保存当前规则(即空规则)到配置文件
sudo netfilter-persistent save
这会覆盖 /etc/iptables/rules.v4 和 /etc/iptables/rules.v6 文件,防止重启后旧规则再次加载。
步骤 4:验证保存成功
查看保存的规则文件内容
sudo cat /etc/iptables/rules.v4 | grep -E “COMMIT|^-P” | head -10
应该看到默认策略是 ACCEPT。
更精细的方案(如果你想要只开放特定端口)
如果你不希望完全开放所有端口,而是只想开放 80、443、22 等必要端口,可以这样配置:
b# 清空所有规则
sudo iptables -F
sudo iptables -X
设置默认策略为 DROP(拒绝所有)
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
允许本地回环
sudo iptables -A INPUT -i lo -j ACCEPT
允许已建立的连接(重要:保证 SSH 不断连)
sudo iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
开放 SSH(22 端口)
sudo iptables -A INPUT -p tcp –dport 22 -j ACCEPT
开放 HTTP(80)和 HTTPS(443)
sudo iptables -A INPUT -p tcp –dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp –dport 443 -j ACCEPT
开放 ICMP(ping)
sudo iptables -A INPUT -p icmp –icmp-type echo-request -j ACCEPT
保存规则
sudo netfilter-persistent save