1

我正在运行一个安装了 ddwrt 的路由器的家庭网络。我可以从家庭网络 ssh 进入路由器,我可以从家庭网络内部 ssh 在电脑中,我可以从家庭网络外部 ssh 进入路由器(静态公共 IP)。现在我想从家庭网络外部在我的电脑上 ssh,据我所知,要做到这一点,我需要创建一个 ssh 隧道。我正在使用以下命令:

ssh -L bbbb:hoomepcip:22 root:externalip

这样做之后,我打开另一个终端,我

ssh homepcusername@externalip -p bbbb

但它不起作用,我做错了什么

第一个命令不是应该在路由器中进行端口转发,所以我发送到它的 bbbb 端口上的外部 ip 的所有内容都会发送到我家用电脑的 22 吗?

现在我已经在路由器 gui 上做了一个永久端口转发,但我不想使用它并在我需要 ssh 时打开端口。

路由器和电脑都安装了SSH服务器,路由器有dropbear电脑openssh

4

2 回答 2

1

我为我找到了解决方案。因此,正如我所说,我需要一种通过路由器从网络外部 ssh 进入我的电脑的方法。首先打开一个终端窗口并输入

ssh -L bbbb:homepcIP:cc myrouterusername@mywanip -p aa 

这会将您连接到路由器并将端口 bbbb(从 1024-60000 中选择一个数字)转发到您电脑中的 cc(通常为 22)输入密码并保持打开状态

然后打开一个新的终端窗口并输入

ssh pcUSERNAME@localhost -p bbbb

在这种情况下,bbbb 可以是您选择的任何端口号(最好高于 1024,最大限制为 60000ish)

cc 和 bb 是 ssh 服务器的端口(我的电脑的 cc 和路由器的 bb,它们通常是 22,但它可以根据配置而改变)

这里的关键是“localhost”,我总是在那里输入我的 pc ip,但你必须输入 localhost,它才能正确连接到 pc。

您还必须在第一台服务器中启用 SSH TCP 转发

于 2021-04-03T23:36:07.450 回答
0

您可以考虑使用 tailscale代替 SSH 隧道。

例如,请参阅“如何使用 Tailscale 和 UFW 保护 Ubuntu 服务器”,这将限制 ssh 访问只能通过 Tailscale,并使用 UFW(简单防火墙)来限制到您的服务器的非 Tailscale 流量。
这将为您提供可用于 SSH 的 Tailscale IP 地址(以 100.xyz 开头),而您的公共互联网 IP 不允许 SSH。
然后,您可以根据需要添加MFA(多因素身份验证)

其他示例:来自Ibrahim Jarif的“如何使用 Tailscale 或 Ngrok 设置 SSH ” 。

于 2021-03-25T08:19:47.687 回答