Ahilan Anantha <ahilan.anantha <at> gmail.com> writes: [snip] > But I don't know why it works when launching dbclient from the shell. > You'd think it would just always kick dbclient. >
I misread the OpenSSH code. I read the "if" but not the "else" block. If OpenSSH finds an "open session suitable for keepaliving" it will send an SSH_MSG_CHANNEL_REQUEST. dbclient does appear to service that. So probably that is what is happening when there's an actual shell session. Only when it can't find such a session, will it send an SSH_MSG_GLOBAL_REQUEST... which dbclient does not implement. I suspect that's what's going on when you ran dbclient in such a way that it only has a tunnel. I think it is fixable by just adding a handler for SSH_MSG_GLOBAL_REQUEST for the dropbear client loop that just sends back SSH_MSG_REQUEST_FAILURE. Ahilan
