通过 SSH 反向隧道转发特定端口

通过 SSH 反向隧道转发特定端口

不幸的是,我住的地方不允许我拥有静态 IP,因此我一直在通过在微型 Amazon EC2 实例上运行的反向 SSH 隧道设置对我家用计算机的访问。我已经让 SSH 正常工作,但我无法弄清楚端口转发。

这是我制作的一个小信息图,旨在帮助说明(我觉得通过一张图表来说明我想要做的事情,问题会更清楚。

图中列出的命令如下:

我在家里的电脑上进行了以下操作:

ssh -R 1337:localhost:22 -i .ssh/tokyoMinekey.pem ec2-user@ec2serveraddress

我在 ec2 服务器上运行这个:

ssh -L6600:localhost:6600 -Nf localhost -p 1337

我的痛苦图表...用油漆画出来 AHHHHHH YEAHHHHH!

仅供参考,我已将端口 6600 添加到我的 Amazon EC2 安全组中,因此它在 EC2 端是开放的

答案1

我不确定你为什么在这里使用两个单独的 ssh 命令?如果你想将 EC2 上的端口 6600 转发到家里的机器上的端口 6600,那么你需要做的就是:

ssh -R :6600:localhost:6600 -i .ssh/tokyoMinekey.pem ec2-user@ec2serveraddress

您还需要确保在EC2 实例上的文件GatewayPorts中启用了该选项。sshd_config

显然,您需要保持 ssh 连接打开,以使端口转发继续工作,但除此之外应该不会有任何问题。

答案2

您能否提供以下输出:

netstat -tulpen

在 上ec2serveraddress。我希望看到两个隧道都从 开始127.0.0.1:PORT127.0.0.1是本地计算机本身的 IP,无法从外部访问。这意味着您可以从服务器本身访问此隧道,但不能从任何其他计算机访问...

如果是这种情况,请将以下内容添加到您的/etc/ssh/sshd_config

GatewayPorts yes

此选项将在 处创建端口0.0.0.0,以便您可以从任何地方进行连接。如果没有其他原因需要创建两个连接的隧道,您当然可以将其缩小到只有一个:

ssh -R 6600:localhost:22 -i .ssh/tokyoMinekey.pem ec2-user@ec2serveraddress

这将创建一条ec2serveraddress:6600通往您的隧道home:22

相关内容