我正在努力建立反向 ssh 隧道。命令看起来正确,但没有流量

我正在努力建立反向 ssh 隧道。命令看起来正确,但没有流量

我家里有一个 NAT 防火墙,它对外暴露了端口 7022,内部映射到我的一台机器的端口 22,我们称之为 alpha。这台机器有一个用户帐户“external”,其authorized_keys文件中包含此场景中所有玩家的公钥

在另一个站点,我目前只能通过 Windows 虚拟机访问,该虚拟机已设置 VPN 以访问远程位置。为了访问那里的远程 rapsberry pi(测试版),使用的命令是ssh -nNT -R 9000:beta:22 me@charliegit bash在 Windows 虚拟机上发出的,其中 charlie 是我的台式机(debian linux),远程 raspberry pi 称为 beta 一旦我的 Windows 机器设置了这个隧道,我就可以 ssh 进入 beta 来做事情。

在中间放置这台 Windows VM 机器有点麻烦,因为每次我想做某事时,我都必须运行它并建立所有连接。我还必须从那里发出 https 请求来查看发生了什么,目前我只能从虚拟机中执行此操作。

因此,我正在尝试找到一种方法,让远程 pi(测试版)自动创建 ssh 隧道,以避免中间的 windows 机器。如果我能让它工作,我想在启动时运行 systemd 服务(不频繁 - 大约每年一次)来创建隧道会方便得多。

到目前为止我已采取以下步骤。

在测试版中,我发出了这个命令。-v 显示(显然)创建此隧道成功ssh -p 7022 -nNT -R alpha:40022:localhost:22 [email protected] -v

在 alpha 上我发出了这个命令sudo lsof -i TCP:40022,我看到在发出上述 ssh 命令之前什么都没有,但之后就有了。我认为这证明 ssh 隧道通过我的防火墙正确设置。

但是,当我从我的桌面发出调试时,ssh -p 40022 external@alpha -v显示连接到端口 40022 上的 alpha,但仅此而已。

我完全不知道该怎么做。我最近问的另一个问题是,如何使用我的路由器 l2tp vpn 功能来尝试类似的事情,但也没有结果。这应该更容易,但我发现并非如此。

我该如何调试?我的命令中是否存在我没​​有注意到的错误?

sudo lsof -i TCP:40022编辑按照请求这里是我尝试从 beta 连接后的输出。

COMMAND  PID     USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
sshd    4127 external   10u  IPv4 50793481      0t0  TCP *:40022 (LISTEN) 
sshd    4127 external   11u  IPv6 50793482      0t0  TCP *:40022 (LISTEN) 

注意,自从这样做以来,我还编辑了 alpha 的sshd_config文件以进行GatewayPorts yes设置(并重新启动服务)。这似乎没有什么区别

答案1

我发现问题

在安装新路由器之前,alpha 一直处于旧路由器的 DMZ 中(它无法转发端口 25,所以这是唯一的选择)。结果它有一个防火墙来代替它自己的防火墙。

删除防火墙,一切开始正常工作

抱歉打扰了

相关内容