我有一个通过 USB 调制解调器连接到互联网的 Raspberry Pi。由于我的 ISP,不幸的是我无法获得我的加密狗本身的公共 IP 地址,但我获得了实际的手机信号塔。
我正在尝试在 pi 上运行节点服务器,并且需要从我的网络从任何地方从外部访问它。
我创建了一个 AWS AMI Linux 服务器,并启用了反向 SSH,但每次我尝试访问 AWS 服务器上的端口来访问 pi 时,都没有发生任何事情。
归根结底,我有一个节点服务在 pi 上运行,它位于 3g dongle/调制解调器(华为 E3531)后面,我无法在其上进行端口转发。
我不想通过 NOip,因为那对我不起作用。我已经使用了 Weaved,它完成了这项工作,但问题是每次都要访问该网站来获取我设备的 DNS - 该 DNS 每 30 分钟就会更改一次。
答案1
您正在寻找的是-R
或RemoteForward
中的选项~/.ssh/config
。看man ssh
。我对此有点生疏,但我认为:
ssh -i ~/.ssh/yourAWSkey -R 80:localhost:80 ubuntu@PublicIpAddress
应该将 Pi 上侦听端口 80 的任何 Web 服务器公开给 AWS EC2 实例的 PublicIpAddress。 ssh 端口转发非常强大且极其灵活。
除了您的问题之外:远程转发端口 22 使您可以从公共互联网 ssh 访问您的 Pi不过要小心- 您错过了端口 22 上对 EC2 服务器的 SSH 访问(只要 Pi 保持连接)。所以你最好这样做ssh -R 443:localhost:22
。然后,这会将任何与 PublicIpAddress:443(规范 HTTPS 端口)的连接转发到 Pi 上的 SSH 端口。
另一个附加点:您需要~/.ssh/config
按照以下方式设置一个适当的段落
Host ec2frontend
HostName FillInThePublicIpAddress
User ubuntu
Port 22
IdentityFile ~/.ssh/FillInNameOfRSAPrivateKey
TCPKeepAlive no
ServerAliveInterval 15
ServerAliveCountMax 3
RemoteForward 80 localhost:80
DynamicForward 8108
Whis 允许简单地ssh ec2frontend
连接和反向转发端口 80。
还有另一个:你想安装自动SSH并用于
autossh -M 0 -Nf ec2frontend
建立永久连接。autossh
位于 ubuntu 存储库中,安装后并使用上述命令调用后,将保持 SSH 处于活动状态(通过 SSH 隧道执行 ping 操作)并在必要时重新启动。