SSH 远程隧道端口

时间:2021-02-07 14:33:58

标签: ssh port portforwarding tunnel

我有 3 台计算机,2 台 Linux 和 1 台 Windows。 Windows PC 和 Linux 服务器 (A) 在同一网络 (1) 上。 linux 服务器 (B) 在另一个网络 (2) 上。

我想在 2 个 linux 服务器之间建立 SSH 隧道,以允许 Windows PC 访问 Linux 服务器 (B) 的 HTTP 页面,因此该页面位于另一个网络上。

在 linux 服务器 (A) 上使用此命令,隧道工作正常,但只能在 linux 本地运行。

ssh -R 8080:localhost:80 linuxa.internet.com

但是从 Windows PC 我无法访问 linux (A) 上的端口 8080。 http://linuxa.local:8080 不起作用。

所以我尝试了这两个命令来打开对我的 PC 的访问,但它也不起作用。

ssh -R 0.0.0.0:8080:localhost:80 linuxa.internet.com
ssh -R ipwindows:8080:localhost:80 linuxa.internet.com

你能帮我吗?

谢谢

2 个答案:

答案 0 :(得分:0)

根据评论,我得出结论,您可能的防火墙有问题。假设您可以从作为“代理”的主机(在本地主机上使用 curl、wget、ncat 等)访问隧道。您应该检查是什么阻止了流量。在大多数情况下,它是一个防火墙。根据您的 Linux 发行版,您可能有不同的防火墙后端和前端。如果您安装了 firewall-cmd 命令,则 firewalld 很可能是其中之一。

但在指责防火墙之前,您应该检查端口是否打开/关闭。我更喜欢 netcat:

HOST_THAT_SHOULD_HAVE_OPEN_PORT #  nc -l 8080
HOST_THAT_SHOULD_BE_ABLE_TO_CONNECT # nc HOST_THAT_SHOULD_HAVE_OPEN_PORT 8080

如果没有连接或连接被拒绝,极有可能是防火墙的问题。

您可以使用 systemctl 检查 firewalld 是否正在运行:

# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2021-02-08 21:42:29 CET; 13h ago

然后您可以在端口 8080 上添加流量:

# firewall-cmd --add-port 8080/tcp
success

它将暂时打开 8080 上的网络流量。然后您应该可以使用端口 8080 和您的 ssh 隧道。

答案 1 :(得分:0)

感谢您的回答,但我认为我没有安装防火墙

systemctl status firewalld

返回

Unit firewalld.service could not be found.

firewall-cmd --add-port 8080/tcp

-bash: firewall-cmd: command not found
相关问题