libssh2_channel_forward_listen_ex发送全局请求包失败求助
libssh2实现本地端口转发失败:调用
libssh2_channel_forward_listen_ex返回错误码-7 我正在用libssh2实现本地端口转发,环境及现状如下:
- 服务器为运行OpenSSH的Docker容器,部署了TCP回显服务,采用密码登录方式
- 可正常通过
ssh命令登录服务器,也能通过ssh -L 7894:127.0.0.1:1794 server实现端口转发,本地执行nc 127.0.0.1 7894能正常触发回显服务响应
但自行编写的libssh2应用程序调用libssh2_channel_forward_listen_ex时失败,错误信息为:Unable to send global-request packet for forward listen request,错误码errno为-7。
OpenSSH调试日志(尾部内容)
2022-10-26 13:48:02.221353473 Accepted password for linuxserver.io from 172.17.0.1 port 59038 ssh2 2022-10-26 13:48:02.221354712 debug1: monitor_child_preauth: user linuxserver.io authenticated by privileged process 2022-10-26 13:48:02.221355826 debug3: mm_get_keystate: Waiting for new keys 2022-10-26 13:48:02.221356944 debug3: mm_request_receive_expect: entering, type 26 2022-10-26 13:48:02.221358009 debug3: mm_request_receive: entering 2022-10-26 13:48:02.225893485 debug3: mm_get_keystate: GOT new keys 2022-10-26 13:48:02.226000913 debug3: mm_auth_password: user authenticated [preauth] 2022-10-26 13:48:02.226070905 debug3: user_specific_delay: user specific delay 0.000ms [preauth] 2022-10-26 13:48:02.226164806 debug3: ensure_minimum_time_since: elapsed 3.936ms, delaying 4.139ms (requested 8.076ms) [preauth] 2022-10-26 13:48:02.226271865 debug3: send packet: type 52 [preauth] 2022-10-26 13:48:02.226375237 debug3: mm_request_send: entering, type 26 [preauth] 2022-10-26 13:48:02.226423116 debug3: mm_send_keystate: Finished sending state [preauth] 2022-10-26 13:48:02.226827341 debug1: monitor_read_log: child log fd closed 2022-10-26 13:48:02.227487840 debug3: ssh_sandbox_parent_finish: finished 2022-10-26 13:48:02.228021181 User child is on pid 266 2022-10-26 13:48:02.228839803 debug3: monitor_apply_keystate: packet_set_state 2022-10-26 13:48:02.229331154 debug2: ssh_set_newkeys: mode 0 2022-10-26 13:48:02.229740053 debug1: rekey in after 4294967296 blocks 2022-10-26 13:48:02.230150994 debug2: ssh_set_newkeys: mode 1 2022-10-26 13:48:02.230567267 debug1: rekey out after 4294967296 blocks 2022-10-26 13:48:02.231008444 debug1: ssh_packet_set_postauth: called 2022-10-26 13:48:02.231441309 debug3: ssh_packet_set_state: done 2022-10-26 13:48:02.231937248 debug3: notify_hostkeys: key 0: ssh-rsa SHA256:/7FFzlIP6gEuh52lzVrSDATTQFj4wnH5ScMtaH+NpHM 2022-10-26 13:48:02.232015182 debug3: notify_hostkeys: key 1: ecdsa-sha2-nistp256 SHA256:njZFCzAT2OFVE0n/kJ6YdOVCF7iPGjyZmy5Lr+3DE2E 2022-10-26 13:48:02.232069432 debug3: notify_hostkeys: key 2: ssh-ed25519 SHA256:YP702pqTQF410dCkQgOsWD/pz+MXoVNv5EzQnxklFD4 2022-10-26 13:48:02.232091834 debug3: notify_hostkeys: sent 3 hostkeys 2022-10-26 13:48:02.232108621 debug3: send packet: type 80 2022-10-26 13:48:02.232146882 debug1: active: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding 2022-10-26 13:48:02.232166314 debug1: Entering interactive session for SSH2. 2022-10-26 13:48:02.232183856 debug1: server_init_dispatch 2022-10-26 13:48:02.232393938 Connection closed by 172.17.0.1 port 59038 2022-10-26 13:48:02.232422452 debug1: do_cleanup 2022-10-26 13:48:02.232439029 Transferred: sent 2096, received 1368 bytes 2022-10-26 13:48:02.232453748 Closing connection to 172.17.0.1 port 59038 2022-10-26 13:48:02.232524366 debug3: mm_request_send: entering, type 50 2022-10-26 13:48:02.232582535 debug3: mm_request_receive: entering 2022-10-26 13:48:02.232583894 debug3: monitor_read: checking request 50 2022-10-26 13:48:02.232585103 debug3: mm_answer_term: tearing down sessions
libssh2调试输出
[libssh2] 0.225733 Conn: Requesting tcpip-forward session for 127.0.0.1:54814 [2022-10-26 08:48:02.226] [error] Failed to start the local-forward listener: Unable to send global-request packet for forward listen request (-7) => libssh2_transport_write plain (36 bytes) 0000: 50 00 00 00 0D 74 63 70 69 70 2D 66 6F 72 77 61 : P....tcpip-forwa 0010: 72 64 01 00 00 00 09 31 32 37 2E 30 2E 30 2E 31 : rd.....127.0.0.1 0020: 00 00 D6 1E : .... [libssh2] 0.225763 Socket: Error sending 80 bytes: 9 [libssh2] 0.225765 Failure Event: -7 - Unable to send global-request packet for forward listen request [libssh2] 0.225935 Transport: Disconnecting: reason=11, desc=Shutdown SSH session, lang= => libssh2_transport_write plain (33 bytes) 0000: 01 00 00 00 0B 00 00 00 14 53 68 75 74 64 6F 77 : .........Shutdow 0010: 6E 20 53 53 48 20 73 65 73 73 69 6F 6E 00 00 00 : n SSH session... 0020: 00 : . => libssh2_transport_write plain2 (0 bytes) [libssh2] 0.225977 Socket: Error sending 80 bytes: 9 [libssh2] 0.225979 Transport: Freeing session resource [libssh2] 0.225985 Transport: Extra packets left 0 [libssh2] 0.225987 Transport: unable to reset socket's blocking state Process finished with exit code 1
更新
排查发现Socket: Error sending 80 bytes: 9为超时错误,但添加libssh2_session_set_timeout(session, 0);后问题仍未解决,求帮忙排查。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

