我家里有一个 NAT 防火墙,它对外暴露了端口 7022,内部映射到我的一台机器的端口 22,我们称之为 alpha。这台机器有一个用户帐户“external”,其authorized_keys
文件中包含此场景中所有玩家的公钥
在另一个站点,我目前只能通过 Windows 虚拟机访问,该虚拟机已设置 VPN 以访问远程位置。为了访问那里的远程 rapsberry pi(测试版),使用的命令是ssh -nNT -R 9000:beta:22 me@charlie
我git 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,所以这是唯一的选择)。结果它有一个防火墙来代替它自己的防火墙。
删除防火墙,一切开始正常工作
抱歉打扰了