前言
- 我确实有一个公共 IP,我可以在WhatIsMyIPAddress上进行验证;
- 当我尝试通过其中任何一个从外部连接到我的计算机时
我有一段时间没有看到任何输出,最终,我收到了这个错误ssh myusername@mypublicIP ssh -p 22 myusername@mypublicIP ssh -p 2222 myusername@mypublicIP ...
我相信这是意料之中的,因为我还没有配置端口转发(对于任何端口)。ssh: connect to host mypublicIP port 2222: Connection timed out
我尝试为 SSH 配置端口转发
因此,我继续尝试在路由器的配置页面中进行配置¹。
路由器配置页面允许通过两个接口这样做:SIMPLIFIED PORT MAPPING和PORT MAPPING,但我没有成功:
- 当我通过PORT MAPPING尝试时,只要将Internal 端口设置为 22,我就会看到以下错误,并且Add按钮变为灰色,因此我无法完成设置
所选端口不可用,因为它当前用于 FASTGate 服务的内部。
- 当我通过SIMPLIFIED PORT MAPPING尝试时,我成功完成了设置(我只需从下拉菜单中选择端口 2222 in/out和我的计算机上的 SSH,然后点击Add,但是当我尝试
ssh
从外部进入我的机器时,我明白了
这告诉我我所做的配置有一些效果,因为我得到一个$ ssh -p 2222 myusername@mypublicIP ssh: connect to host mypublicIP port 2222: Connection refused
refused
错误而不是timed out
,但有些东西仍然不太正确。
Fwiw,我的路由器来自我的提供商(我在意大利)FastWeb。
我在这个社区没有足够的声誉来添加一个简单的评论,所以我不得不求助于一个成熟的答案。我也是意大利人,有同样的调制解调器和问题,我可以提供更多的确定性,即
选项不起作用。对于意大利读者来说,这似乎证明了这款调制解调器自 2020 年初以来由于固件更新而出现了这样的错误。
感谢Enrico的自我回答,我试图解决这个问题变得疯狂!
编辑:
为了尝试忘记这个问题,我还在我计划使用的每个 SSH 客户端中创建了一个
config
文件~/.ssh
,其中包含:这样我也可以在本地连接,而不必每次都指定与默认端口不同的端口
22
(即,强加的2222
)。例如,我现在可以运行:综上所述,如果我正确理解了这个问题,我们调制解调器中的这个错误将不允许任何人在同一个 LAN 内(从网络外部)连接到超过 1 个 SSH 服务器,因为它只允许使用预定
2222
端口您当然可以将单个本地 IP 地址绑定到该任务:如果一切都通过 Fastweb 提供的“简化”/定制配置完成,那么这是 100% 正确的。我仍然没有完全理解@Enlico 的意思但是我仍然设法在没有这一步的情况下解决了我的问题。
希望这可能对将来的某人有所帮助(也许 Technicolor 的员工也是如此)!
TL;博士
2222
,/etc/ssh/sshd_config
以便我的计算机作为 SSH 服务器侦听端口2222
(我可以转发)而不是22
(路由器不能转发的端口是愚蠢的)”~/.ssh/config
和自定义文件我在 archlinux 的 IRC 频道上寻求帮助。
调查的结果是我的路由器有问题,它不允许我通过“正常”端口映射接口转发到端口 22,如问题中的第一个屏幕截图所示。
为了解决这个问题,我似乎有两个选择:
考虑到 FastWeb 技术人员的(统计上)稀缺知识,第一个选项可能最容易尝试,但也可能最不可能产生影响;毕竟,我没有对路由器造成任何伤害,而且,据我所知,根据我的记忆,问题正是在路由器硬重置后开始的。
为了暂时解决这个问题,我不得不
Port 2222
,/etc/ssh/sshd_config
以便我的计算机作为 SSH 服务器侦听端口2222
(我可以转发)而不是22
(我不能因为路由器是愚蠢的),wxyz
到内部端口的端口转发2222
。如果 SSH 看到您在端口 2222 上进入并且它可能在端口 22 上列出,则 SSH 不会接受连接。您可以检查
sudo lsof -i -P | grep LISTEN | grep sshd
ssh 正在接受连接的端口。(在您使用 ssh 连接的机器上)您可以使用以下命令更改 SSH 端口: