当前位置:首页 > 技术 > 正文内容

在Oracle Cloud Ubuntu上修改SSH端口的完整指南

访客 技术 2026年5月8日 09:05 4

在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控制台进行操作:

  1. 进入网络虚拟云网络
  2. 选择你的VCN
  3. 点击安全列表
  4. 打开默认安全列表
  5. 点击添加入站规则

填写以下字段:

字段
源类型 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入站规则:

  1. 返回网络虚拟云网络安全列表
  2. 在入站规则列表中找到端口22的规则
  3. 点击X图标删除

核心要点回顾

  • Oracle Cloud使用iptables而非ufw — 按此配置防火墙
  • 规则位置至关重要 — 插入到拒绝所有规则之前以避免阻塞
  • 三层配置缺一不可 — SSH配置、iptables和Oracle Cloud安全组规则必须全部更新
  • 清理前先测试 — 确认新端口正常工作后再删除旧规则
  • 持久化更改 — 使用netfilter-persistent save确保重启后规则依然有效

修改SSH端口是一项快速的安全加固措施,值得花几分钟正确配置。

参考资料

标签: Oracle Cloud

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。