Oracle云计算更改ssh端口失败

Oracle云计算更改ssh端口失败

我是云计算新手,计划使用 Oracle Cloud 提供的永久免费计算服务来获取公共 IP 地址以运行网站。作为一项基本安全措施,我要求我的机器不要在默认端口 22 上侦听 SSH,因为这太容易被嗅探,但需要将其交换到一个新端口,我会保密这个新端口,但我将其称为 NEWSHPORT。这在使用公共 IP 地址时尤为重要。我的问题是,在通过 ssh 进入机器后,我验证防火墙(默认情况下)已关闭,因此它允许所有流量进入,并且我首选的端口 NEWSHPORT 未被任何其他服务使用。我将侦听端口交换到新端口,重新启动 ssh 服务,验证我是否有一条允许此流量进入我的子网的 Oracle 云网站的入口规则。我尝试使用新端口进行 ssh,但它会像其他端口一样超时。默认端口 22 反而显示连接被拒绝。

这个问题与以下问题类似但不相同: 更改 ssh 端口导致拒绝连接

我错过了什么?

创建计算实例:默认放置图像:Canonical Ubuntu 18.04 形状:VM.Standard.A1.Flex 4 核 OCPU,24 GB 内存默认网络保存私人 ssh 密钥默认书籍卷创建实例

等待配置完成复制其公共 IP 地址:1.2.3.4

SSH 到默认端口 22

ssh -i C:\path\to\saved\key\ssh-key-2021-12-14.key -p 22 [email protected]

新的 ECDSA 指纹。保存了吗?是的,SSH 成功了。

在机器上:检查防火墙

$ sudo ufw status

不活动(这意味着允许所有流量通过)

检查哪些端口已被使用:

UDP *:111
UDP *:932
TCP *:111 (LISTEN)
UDP *:111
UDP *:932
TCP *:111 (LISTEN)
UDP :68
UDP :53
UDP :53
UDP :53 (LISTEN)
TCP :22 (LISTEN)
TCP :22 (LISTEN)
:22 -> mypc:myport (my ssh connection)

我在 SSH 上监听的首选端口是开放的/未被其他程序使用。

更改 ssh 监听端口。并设置为首选端口整数。出于安全原因,我将保留此整数的私密性,但我将用字符串表示他的号码:NESSHPORT

$ sudo vi /etc/ssh/sshd_config
Port NEWSSHPORT

重新启动 ssh 服务

$ sudo systemctl restart sshd

检查 ssh 现在是否正在监听这个新的 NEWSHPORT:

$ sudo lsof -i -P -n

现在这些是存在的:

sshd root IPv4 TCP *:NEWSSHPORT (LISTEN)
sshd root IPv6 TCP *:NEWSSHPORT (LISTEN)

仔细检查防火墙是否仍然不在线:

$ sudo ufw status
Status: inactive

因此确认防火墙未打开,因此所有内容都可以通过。确认 ssh 现在正在 IPv4 和 IPv6 上的新端口 NEWSHPORT 上监听 TCP 流量。

退出机器:

$ exit

检查您的 Oracle 云子网是否允许新端口上的流量进入:转到计算实例 > 实例信息选项卡 > 主 VNIC > 单击子网链接以查看其子网。安全列表 > 默认安全列表。单击它。验证 NEWSHPORT 是否有 IP 0.0.0.0/0 的入口规则,这是所有可能 IP 地址的 CIDR 表示法。我当前的入口规则:无状态:否,来源:0.0.0.0/0 TCP 源端口范围:全部,目标端口范围:NEWSHPORT,类型和代码:我留空。好的,所以应该允许新端口上的流量进入。

关键时刻:

ssh -i C:\path\to\saved\key\ssh-key-2021-12-14.key -p NEWSSHPORT [email protected]
ssh: connect to host 1.2.3.4 port NEWSSHPORT: Connection timed out

但是当我尝试原来的端口 22 时:

ssh -i C:\path\to\saved\key\ssh-key-2021-12-14.key -p 22 [email protected]
ssh: connect to host 152.70.195.101 port 22: Connection refused

如果我尝试一些没有任何人在监听的随机端口,并且也没有 Oracle 子网规则允许:

ssh -i C:\path\to\saved\key\ssh-key-2021-12-14.key -p 3456 [email protected]
ssh: connect to host 1.2.3.4 port 3456: Connection timed out

结论:看起来到端口 22 的原始流量肯定通过了,但被机器拒绝了。这是正确的响应,但尝试任何其他端口,似乎流量在通往我的机器的途中被阻止或丢弃了。我做错了什么?

答案1

我找到了答案这里

此问题与 ufw 和 iptables 有关。虽然在参考家庭安装的 ubuntu 中 ufw 被禁用,但 iptables 非常宽松,让人觉得如果 ufw 被禁用,那么你就不需要担心 iptables。这不是一个好的经验法则。Oracle 云有一些特定的 iptables 规则允许它启动,正如讨论的那样这里。因此,他们建议不要专门为 ubuntu 使用 ufw。因此,必须直接更改 iptables 规则,以允许您的自定义 ssh 端口查看流量。

相关内容