在Oracle Cloud Ubuntu上修改SSH端口的完整指南
在Oracle Cloud上配置Ubuntu实例时,你会发现一个与标准Ubuntu安装不同的关键点:系统使用iptables而非ufw进行防火墙管理。这一区别在修改SSH端口时尤为重要——仅编辑/etc/ssh/sshd_config配置文件是不够的。你需要同时配置SSH守护进程和防火墙规则,并更新Oracle Cloud的网络安全组设置。
本指南将带你完成在Oracle Cloud上安全修改SSH端口的完整流程。
为何需要修改SSH端口
SSH服务默认运行在端口22,这是暴力破解攻击和自动化扫描的常见目标。将SSH端口改为非标准端口可以显著减少非必要的连接尝试,通过模糊性提升安全性。然而,如果忽略防火墙配置,新的SSH端口将无法接受连接,导致你无法访问自己的实例。
步骤一:修改SSH配置文件
首先编辑SSH守护进程配置文件:
sudo nano /etc/ssh/sshd_config
找到指定端口的行,该行可能已被#符号注释:
# Port 22
取消注释并将端口修改为你期望的端口(本例中使用22022):
Port 22022
保存文件:按Ctrl + X,然后按Y,最后按Enter。
步骤二:更新iptables防火墙规则
这是许多用户容易忽略的关键步骤。你需要添加新的iptables规则以允许新SSH端口的流量。
首先查看当前iptables规则及其行号:
sudo iptables -L INPUT --line-numbers
输出类似如下:
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
2 ACCEPT icmp -- anywhere anywhere
3 ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
4 ACCEPT tcp -- anywhere anywhere tcp dpt:http
5 ACCEPT tcp -- anywhere anywhere tcp dpt:https
6 REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
关键要点:你必须将新的SSH规则插入到拒绝所有规则之前(本例中为第6行)。在第6位插入规则:
sudo iptables -I INPUT 6 -p tcp --dport 22022 -m state --state NEW -j ACCEPT
命令解析:
-I INPUT 6— 在INPUT链的第6位插入-p tcp— 协议为TCP--dport 22022— 目标端口为22022-m state --state NEW— 匹配新连接-j ACCEPT— 接受连接
步骤三:持久化iptables配置
默认情况下,iptables规则在系统重启后会丢失。使用netfilter-persistent保存规则:
sudo netfilter-persistent save
此命令将iptables规则写入磁盘,确保系统重启后规则依然有效。
步骤四:重启SSH服务
应用配置更改:
sudo systemctl daemon-reload
sudo systemctl restart sshd
验证服务状态:
sudo systemctl status sshd
步骤五:更新Oracle Cloud网络安全组规则
SSH在新端口上无法工作,直到你更新Oracle Cloud的安全列表。通过Web控制台进行操作:
- 进入网络 → 虚拟云网络
- 选择你的VCN
- 点击安全列表
- 打开默认安全列表
- 点击添加入站规则
填写以下字段:
| 字段 | 值 |
|---|---|
| 源类型 | CIDR |
| 源CIDR | 0.0.0.0/0 |
| IP协议 | TCP |
| 源端口范围 | 全部 |
| 目标端口范围 | 22022 |
点击保存。Oracle Cloud将在几秒内应用该规则。
测试连接
所有更改完成后,从本地机器测试新的SSH连接:
ssh -i my-key.pem -p 22022 ubuntu@your-public-ip
将my-key.pem替换为你的私钥路径,将your-public-ip替换为实例的公网IP地址。
如果连接成功,说明SSH端口已成功修改。如果连接挂起或超时,请检查:
- iptables规则是否已正确插入(使用
sudo iptables -L INPUT --line-numbers检查) - Oracle Cloud安全列表规则是否已创建
- SSH守护进程是否成功重启
清理工作:移除旧端口规则
确认新端口SSH工作正常后,删除旧的端口22规则以减少攻击面。
首先查找旧SSH规则的行号:
sudo iptables -L INPUT --line-numbers
使用-D(删除)标志删除:
sudo iptables -D INPUT 3
将3替换为实际输出中的行号。
保存更新后的规则:
sudo netfilter-persistent save
同时从Oracle Cloud安全列表中删除旧的端口22入站规则:
- 返回网络 → 虚拟云网络 → 安全列表
- 在入站规则列表中找到端口22的规则
- 点击X图标删除
核心要点回顾
- Oracle Cloud使用iptables而非ufw — 按此配置防火墙
- 规则位置至关重要 — 插入到拒绝所有规则之前以避免阻塞
- 三层配置缺一不可 — SSH配置、iptables和Oracle Cloud安全组规则必须全部更新
- 清理前先测试 — 确认新端口正常工作后再删除旧规则
- 持久化更改 — 使用
netfilter-persistent save确保重启后规则依然有效
修改SSH端口是一项快速的安全加固措施,值得花几分钟正确配置。