我正在调试OpenSSH代码,似乎在单个SSH session (单个连接的子服务器)上分配了多个通道。

我的查询在这里可能很幼稚:


(gdb) p channels[0]
$1 = (Channel *) 0xb0f33e20
(gdb) p channels[0]->rfd
$2 = 0xd
(gdb) p channels[0]->efd
$3 = 0xffffffff
(gdb) p channels[0]->wfd
$4 = 0xffffffff
(gdb) p channels[1]->wfd
$5 = 0x9
(gdb) p channels[1]->efd
$6 = 0xffffffff
(gdb) p channels[1]->rfd
$7 = 0x9

最佳答案



每个通道都是X11转发,TCP端口转发(可能有更多类型),UNIX域套接字转发(或ssh-agent套接字)或MUX代理。咨询source code描述类型是一个好的开始。如果客户端使用命令行选项(-X-L-R-D-A,...)请求它们,这些文件将被打开,这些选项在ssh的手册页中进行了介绍。



如果您将以 Debug模式(LogLevel DEBUG3)运行OpenSSH客户端和/或服务器,您将获得许多有用的信息,即在各种使用情况下正在交换什么消息。



可能不是,但不清楚您在这里问什么以及背景是什么。显然,这是有效的通道,其读取文件描述符指向FD 0x0D,因此您可能希望在某些时候读取某些内容。

关于ssh - 单个SSH session 中的多个 channel ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42331445/

10-12 22:16