Linux 反向ssh隧道不公开ec2上的端口

Linux 反向ssh隧道不公开ec2上的端口,linux,amazon-web-services,amazon-ec2,ssh,ssh-tunnel,Linux,Amazon Web Services,Amazon Ec2,Ssh,Ssh Tunnel,这个问题可能已经得到了回答,并且有很多文章展示了如何进行反向ssh隧道。然而,我被困在最后一步 我有一个Linux机箱,它在端口8080上运行web服务。这是NAT的背后,我无法从覆盖路由器向它转发端口 我在AWS上有一个新的Ubuntu18EC2实例,我正在使用下面的命令从我的Linux机器中反转隧道 ssh-i“key.pem”-R\*:8080:\*:8080ubuntu@ec2-第45332页 EC2 ssh服务器正在端口上侦听45332 在服务器上: $ sudo lsof -i -P

这个问题可能已经得到了回答,并且有很多文章展示了如何进行反向ssh隧道。然而,我被困在最后一步

我有一个Linux机箱,它在端口8080上运行web服务。这是NAT的背后,我无法从覆盖路由器向它转发端口

我在AWS上有一个新的Ubuntu18EC2实例,我正在使用下面的命令从我的Linux机器中反转隧道

ssh-i“key.pem”-R\*:8080:\*:8080ubuntu@ec2-第45332页

EC2 ssh服务器正在端口上侦听
45332

在服务器上:

$ sudo lsof -i -P -n | grep LISTEN
systemd-r   650 systemd-resolve   13u  IPv4  15830      0t0  TCP 127.0.0.53:53 (LISTEN)
sshd        893            root    3u  IPv4  18322      0t0  TCP *:45332 (LISTEN)
sshd        893            root    4u  IPv6  18333      0t0  TCP *:45332 (LISTEN)
sshd      20731          ubuntu    9u  IPv6  75581      0t0  TCP [::1]:8080 (LISTEN)
sshd      20731          ubuntu   10u  IPv4  75582      0t0  TCP 127.0.0.1:8080 (LISTEN)
如果我在Ec2上执行curl localhost:8080,我将得到正确的web服务响应

但是,当我使用来自同一ec2或完全不同的设备的公共IP/公共DNS名称执行curl时,我得到:

curl:(7)无法连接到端口8080:连接被拒绝

我已检查我的VPC ACL,并允许安全组中的所有入站和出站流量

我确保防火墙规则没有阻止它:

$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
45332/tcp                  ALLOW IN    Anywhere                  
45332/udp                  ALLOW IN    Anywhere                  
8080/tcp                   ALLOW IN    Anywhere                  
8080/udp                   ALLOW IN    Anywhere                  
45332/tcp (v6)             ALLOW IN    Anywhere (v6)             
45332/udp (v6)             ALLOW IN    Anywhere (v6)             
8080/tcp (v6)              ALLOW IN    Anywhere (v6)             
8080/udp (v6)              ALLOW IN    Anywhere (v6)
当这不起作用时,我删除了ssh隧道并直接在ec2上运行相同的web服务。 这工作做得非常好


但是,我想从我的Linux机器上运行该服务。

我也遇到了同样的问题,这对我很有效

从本地Linux框:

ssh-i“key.pem”-R 8081:\*:8080ubuntu@ec2-第45332页

注意,我使用8081而不是8080

然后在EC2实例中,ssh通过隧道8081到8080将其自身连接起来

ssh locahlost-L 8080:localhost:8081


我真的不明白是怎么回事,但在尝试了不同的组合之后,这个组合对我来说很有效。

我认为在这种情况下,您需要从ssh到主框的正常通道。可以尝试
ssh-N-l8080:localhost:8080ubuntu@ec2-p 45332-v
当我在我家的Linux设备上运行这个命令,在端口8080上运行服务时,我得到一个错误,即端口8080已经在使用中
bind[127.0.0.1]:8080:地址已在使用
我想通过我的ec2实例使我的家用Linux设备可用,同时启动从家用Linux设备到ec2的ssh连接。我认为简单的ssh隧道在这种情况下没有帮助。