我有一个具有 2 个公共 IP 的 VPS(假设 192.168.0.1 和 192.168.0.2)
我正在尝试在绑定到第二个 IP 的 VPS 上建立一条到路由器的本地隧道,然后通过另一台机器访问它。我执行以下操作 -
# ssh -g -L 192.168.0.2:22:remote_machine:22 remote_machine
然后,我在咖啡店尝试从笔记本电脑访问 192.168.0.2,但超时。可能发生什么情况?这是我解决的问题 -->
我的 VPS 上的 SSH 服务器仅侦听 192.168.0.1。当我执行 a 时,
netstat - plant |grep LISTEN
我看到tcp 0 0 192.168.0.1:22 0.0.0.0:* LISTEN 603/sshd
正确的结果,603 确实是 SSHD 的进程 ID。当我执行上述端口转发时,我
netstat -plant | grep LISTEN
看到tcp 0 0 192.168.0.2:22 0.0.0.0:* LISTEN 1416/ssh tcp 0 0 192.168.0.1:22 0.0.0.0:* LISTEN 603/sshd
而1416确实是我调用的进程ID ssh
。
selinux 被禁用
iptables -L
没有列出任何内容。没有任何类型的防火墙。我能够
ssh 192.168.0.2
在 VPS 上执行此操作,并且它成功地将我带到了remote_machine
.但是,我无法从 VPS 外部(从我的咖啡店)获得相同的行为/etc/ssh/ssh_config
,/etc/ssh/sshd_config
,一切$HOME/.ssh/config
都包含行GatewayPorts yes
, 我也使用该-g
选项。事实上,我已经尝试了所有组合,但仍然无法从远程计算机访问本地转发端口。当我和我
ssh
一起跑步时-vvv
,我确实看到了 ->debug1: Local connections to 192.168.0.2:22 forwarded to remote address remote_machine:22 debug3: channel_setup_fwd_listener: type 2 wildcard 0 addr 192.168.0.2 debug1: Local forwarding listening on 192.168.0.2 port 22.
但是,当我尝试连接到该端口时,没有任何操作通知。
我已经尝试过以具有特权端口的根用户和具有高编号端口的非根用户的身份进行此操作。同样的行为。只能从 VPS 本身进行访问,而不能从 VPS 外部进行访问。
如果我将 VPS SSH 服务器也设置为侦听 192.168.0.2,我就可以从该地址访问 VPS。但是,当我创建一个端点之一位于 192.168.0.2 且另一个端点位于远程计算机上的隧道时,只能从 VPS 内部访问该隧道,而不能从外部任何地方访问。
知道我缺少什么吗?