我尝试使用以下命令创建通过服务器到达客户端的隧道
ssh -X -f admin@IP_server -N -L 4444:IP_client:80
但是当尝试通过 Firefox 打开客户端:80 时收到以下错误
channel 2: open failed: unknown channel type:
Connection to 81.21.20.207 closed by remote host.
有人知道问题出在哪里吗?非常感谢
答案1
以下是我用来在服务器上加载 webmin 的方法(它被防火墙隔离,因此只有具有 ssh 访问权限的人才能看到它):
ssh -l oli -L 9090:localhost:9090 my-server-ip
这会将我连接到服务器,并将我的本地端口 9090 映射到服务器的 P9090。我只需浏览http://localhost:9090/
,就可以看到 webmin。
如果你尝试连接到另一台设备通过您的服务器,您真的不想在手动隧道选项上浪费时间。ssh
有一个内置的 SOCKS 代理模式。运行此命令:
ssh -D 9999 oli@my-server-ip
然后告诉浏览器有关 SOCKS 代理的信息。查看网络设置。localhost
作为服务器、端口9999
。请记住,这必须在 SOCKS 设置下。这不是 HTTP 代理。
现在,当您浏览时,所有流量都会通过 ssh 隧道。这意味着如果另一端有一台只有您的服务器可以访问的设备,您可以使用其 IP 连接到该设备。
请注意,DNS 查找和其他网络流量不会通过隧道(据我所知),因此如果需要的话您需要连接到一个 IP(我怀疑在这种情况下会有所不同)
答案2
如果你想建立一个反向隧道,可以尝试以下方法:
ssh -NT -R 4444:local.mydomain.com:80 [email protected]
它的作用是启动与远程.mydomain.com并转发 TCP 端口 4444远程.mydomain.com到 TCP 端口 80本地.mydomain.com。“-N”告诉 ssh 只设置隧道而不准备命令流,“-T”告诉 ssh 不要在远程系统上分配伪终端。“-R”选项告诉 ssh 将隧道设置为反向隧道。
答案3
您的描述令人困惑。正如所指定的,您已告诉它要将 连接localhost:4444
到 ,IP_server
然后应连接到IP_client:80
,但您却直接连接到IP_client:80
?