前言
- 我确实有一个公共 IP,我可以在上面验证我的 IP 地址是什么;
- 当我尝试通过以下任何一种方式从外部连接到我的计算机时
我有一段时间看不到输出,最后出现此错误ssh myusername@mypublicIP ssh -p 22 myusername@mypublicIP ssh -p 2222 myusername@mypublicIP ...
我认为这是预料之中的,因为我还没有配置端口转发(对于任何端口)。ssh: connect to host mypublicIP port 2222: Connection timed out
我尝试配置 SSH 端口转发
因此我继续尝试在路由器的配置页面¹中进行配置。
路由器配置页面允许通过两个界面进行此操作:简化端口映射和端口映射,但我都没有成功:
- 当我尝试通过端口映射,我一设置内部端口到 22 时,我看到以下错误,并且添加按钮变灰,因此我无法完成设置
所选端口不可用,因为它当前用于 FASTGate 服务的内部。
- 当我尝试通过简化端口映射,我成功完成设置(我只需要选择通过端口 2222 进行 SSH 进/出和我的电脑,然后点击添加,但当我尝试
ssh
从外部进入我的机器时,我得到了
它告诉我我所做的配置是有一定的效果,因为我得到的是$ ssh -p 2222 myusername@mypublicIP ssh: connect to host mypublicIP port 2222: Connection refused
refused
错误而不是timed out
,但有些事情仍然不太正确。
顺便说一下,我的路由器来自我的供应商(我在意大利),快网。
答案1
我在这个社区的声誉不足以添加简单的评论,所以我不得不求助于一个完整的答案。我也是意大利人,有同样的调制解调器和问题,我可以更肯定地说明
- 尝试硬重置路由器,看看它是否允许我在端口映射期间将 22 设置为内部端口
选项不起作用。对于意大利读者来说,这似乎证明这款调制解调器自 2020 年初以来由于固件更新而出现了这样的错误。
感谢 Enrico 的自我回答,我快要疯了才想解决这个问题!
编辑:
为了尝试忘记这个问题,我还在我计划使用的每个 SSH 客户端config
中创建了一个文件,其中包含:~/.ssh
Host raspberry_at_home
HostName 192.168.1.17
Port 2222
User andrea
Host raspberry_when_outside
HostName <MY_PUBLIC_IP>
Port 2222
User andrea
这样我也可以在本地连接,而不必每次都指定与默认端口22
(即强加的2222
)不同的端口。例如,我现在可以运行:
ssh raspberry_when_outside
综上所述,如果我理解正确的话,我们的调制解调器中的这个错误将不允许任何人连接到同一 LAN 内的多个 SSH 服务器(从网络外部),因为它只允许使用预定的端口执行2222
任务,当然,您可以将单个本地 IP 地址绑定到该端口:如果一切都使用 Fastweb 提供的“简化”/定制配置完成,这是 100% 正确的。我仍然没有完全理解 @Enlico 的意思
- 设置从外部端口
wxyz
到内部端口的端口转发2222
但我还是设法在没有该步骤的情况下解决了我的问题。
希望这可以在将来对某些人有所帮助(也许对 Technicolor 的员工也有所帮助)!
总结
- 使用调制解调器提供的简化端口映射 SSH 配置
- (正如@Enlico 所说)“设置端口
2222
,/etc/ssh/sshd_config
这样我的电脑作为 SSH 服务器,就可以监听端口2222
(我可以转发到该端口)而不是22
(因为路由器很笨,我不能转发到该端口)” - 或者,按照上面的建议创建
~/.ssh/config
并自定义文件
答案2
我已经在 archlinux 的 IRC 频道上寻求帮助。
调查的结果是,我的路由器出了问题,不允许我转发到通过“正常”端口映射界面访问端口 22,如问题中第一个截图所示。
为了解决这个问题,我似乎有两个选择:
- 尝试硬重置路由器,看看它是否允许我在端口映射期间将 22 设置为内部端口,
- 致电 ISP FastWeb 寻求帮助。
考虑到 FastWeb 技术人员的知识(从统计上看)稀缺,第一个选项可能是最容易尝试的,但也可能是最不可能产生影响的;毕竟,我没有对路由器造成任何损害,而且据我记忆所知,问题正是在路由器硬重置后出现的。
为了暂时解决这个问题,我必须
- 设置我的电脑作为 SSH 服务器,监听端口(我可以转发到该
Port 2222
端口)而不是(我不能转发到该端口,因为路由器很笨),/etc/ssh/sshd_config
2222
22
- 设置从外部端口
wxyz
到内部端口的端口转发2222
。
答案3
如果 SSH 发现您通过端口 2222 进入,则不会接受连接,并且它可能在端口 22 上列出。您可以检查sudo lsof -i -P | grep LISTEN | grep sshd
ssh 在哪个端口接受连接。(在您使用 ssh 连接的机器上)
您可以使用以下命令更改 SSH 端口:
sudo sed -i "s/#Port 22/Port 2222/" /etc/ssh/sshd_config
sudo systemctl restart sshd