我有一台远程机器(IP XX.XX.XX.XX),它运行一个用 python/cherrypy 编写的应用程序,它在环回接口上打开一个用于 http 连接的端口。如果我登录到远程机器(使用 ssh)然后执行
curl http://127.0.0.1:8021
Run Code Online (Sandbox Code Playgroud)
一切正常。但是,当我使用本地机器设置隧道时
ssh -L 6868:XX.XX.XX.XX:8021 -fN XX.XX.XX.XX
Run Code Online (Sandbox Code Playgroud)
然后运行
curl http://localhost:6868
Run Code Online (Sandbox Code Playgroud)
或者
curl http://127.0.0.1:6868
Run Code Online (Sandbox Code Playgroud)
我收到这条消息
curl: (52) Empty reply from server
Run Code Online (Sandbox Code Playgroud)
ssh 在我创建隧道的终端中显示此消息
channel 2: open failed: connect failed: Connection refused
Run Code Online (Sandbox Code Playgroud)
为了进行测试,我更改了应用程序以打开真实网络接口上的端口(XX.XX.XX.XX 而不是 127.0.0.1),并且我在同一远程网络中的另一台机器上使用 curl 并且它工作正常。尽管如此,尝试在两台远程机器之间创建隧道产生了与远程服务器和我的本地机器之间相同的结果。
我试图确保问题不是防火墙,所以我跑了
iptables -A INPUT -d 127.0.0.1/32 -i lo -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
我认为这已经足够了,但我不确定。这是 ssh -v 输出
[____@YYYY ~]$ ssh -vvL 6868:XX.XX.XX.XX:8021 -fN XX.XX.XX.XX
OpenSSH_5.4p1, OpenSSL 1.0.0-fips 29 Mar 2010
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for …Run Code Online (Sandbox Code Playgroud)