我有3台电脑2台Linux和1台Windows。Windows PC和Linux服务器(A)在同一网络(1)中。linux服务器(B)在另一个网络(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
你能帮我吗?
谢谢
从评论中,我得出结论,您可能防火墙有问题。假设您可以从"代理"主机到达隧道。(在本地主机上使用curl,wget,ncat等)。你应该检查是什么阻塞了交通。在大多数情况下,它是一个防火墙。根据您的Linux发行版,您可能有不同的防火墙后端和前端。如果您安装了firewall-cmd
命令,则很可能防火墙是一个。
但是在责备防火墙之前,您应该检查端口是否打开/关闭。我更喜欢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
下运行:
# 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隧道。
谢谢你的回答,但是我想我没有安装防火墙
systemctl status firewalld
返回Unit firewalld.service could not be found.
和
firewall-cmd --add-port 8080/tcp
-bash: firewall-cmd: command not found