0

我正在使用 openSSH (8.0p1) 并使用 netmiko 客户端向服务器发送一些数据。我看到服务器的回复有延迟。为了调试它,我将日志放入 openSSH 代码中以查看可能导致延迟的原因,并发现延迟很可能介于 shell 返回数据和 sshd(用户权限的孩子)正在加密数据之间。

直到现在我已经跟踪到这里的代码

1. Data from client reaches (after getting read event in select) to => server_loop2 -> 
channel_handler
2. Channel_handler calls “channel_post_open” which in turn calls following 4 functions
    a. channel_handle_rfd => Data from shell to sshd
    b. channel_handle_wfd =>Data to shell from sshd
    c. channel_handle_efd
    d. channel_check_window =>

3. server_loop2 -> process_input => This process input from client and store in ssh buffer.
4. -> process_output => send buffered data to SSH client.

我看到以下函数正在加密数据“ssh_packet_send2_wrapped”,但我不确定在从 shell 返回数据(channel_handle_rfd)和将数据写入客户端(process_output)之间调用了哪些函数。

有人可以帮我在功能之间找到,以便我可以放置日志来检查导致延迟的特定功能吗?

4

1 回答 1

0
void channel_output_poll(void) {
    ....
    packet_start(compat20 ? SSH2_MSG_CHANNEL_DATA : SSH_MSG_CHANNEL_DATA);
    packet_put_int(c->remote_id);
    packet_put_string(buffer_ptr(&c->input), len);
    packet_send();
    ....
}

packet_send -> sshpkt_send ->ssh_packet_send2 ->ssh_packet_send2_wrapped
于 2021-04-23T08:54:33.827 回答