当客户端通过隧道连接时,到受 SSL 保护的服务器的 SSH 隧道失败

当客户端通过隧道连接时,到受 SSL 保护的服务器的 SSH 隧道失败

我有一个服务器,它有两种传输实现,它们是在 Qt 上实现的。安全和不安全。安全传输使用 QSslSocket,其他使用 QTCPSocket。一种传输是安全的,另一种则不是。

当您通过 VPN 或本地网络在本地连接时,两者都可以正常工作。但是当您在远程计算机上创建到此服务器的 SSH 隧道时:

ssh -vvvvv -N -C -p 22 [email protected] -L 2506:localhost:2506

... 问题就从这里开始出现了。当我为这个服务器端口创建隧道并尝试在服务器运行不安全的传输实现时进行连接时,一切都很好。隧道正在运行,客户端可以连接并与服务器一起工作。但是当使用安全实现(QSslSocket)时,客户端尝试连接后,ssh 隧道会立即失败。错误如下所示。为什么会发生这种情况?

debug1: Local connections to LOCALHOST:2506 forwarded to remote address localhost:2506
debug3: channel_setup_fwd_listener_tcpip: type 2 wildcard 0 addr NULL
debug3: sock_set_v6only: set socket 4 IPV6_V6ONLY
debug1: Local forwarding listening on ::1 port 2506.
debug2: fd 4 setting O_NONBLOCK
debug3: fd 4 is O_NONBLOCK
debug1: channel 0: new [port listener]
debug1: Local forwarding listening on 127.0.0.1 port 2506.
debug2: fd 5 setting O_NONBLOCK
debug3: fd 5 is O_NONBLOCK
debug1: channel 1: new [port listener]
debug2: fd 3 setting TCP_NODELAY
debug3: ssh_packet_set_tos: set IP_TOS 0x10
debug1: Requesting [email protected]
debug3: send packet: type 80
debug1: Entering interactive session.
debug1: pledge: network
debug3: receive packet: type 80
debug1: client_input_global_request: rtype [email protected] want_reply 0
debug1: Connection to port 2506 forwarding to localhost port 2506 requested.
debug2: fd 6 setting TCP_NODELAY
debug2: fd 6 setting O_NONBLOCK
debug3: fd 6 is O_NONBLOCK
debug1: channel 2: new [direct-tcpip]
debug3: send packet: type 90
debug3: receive packet: type 92
channel 2: open failed: connect failed: Connection refused
debug2: channel 2: zombie
debug2: channel 2: garbage collecting
debug1: channel 2: free: direct-tcpip: listening port 2506 for localhost port 2506, connect from 127.0.0.1 port 61194 to 127.0.0.1 port 2506, nchannels 3
debug3: channel 2: status: The following connections are open:

答案1

channel 2: open failed: connect failed: Connection refused

这意味着没有人监听给定的地址 ( localhost:2506)。因此,要么是您的程序未启动,要么是崩溃,要么是监听其他端口,要么是存在其他问题。这些就是日志中可以看到的内容,其余内容请查看您的程序,并使用 netstat 检查实际监听的位置。

相关内容