I've updated my server from 2.2.3 to 2.2.5 and got a slight breakage from this ticket changeset. 6 out of 400+ hosts with net.tcp.service.perf[ssh] check showed a PROBLEM. The breakage is attributed to this change as that service on those hosts was up and operational.
tcpdump of the check sessions shows the difference I think is giving the false positive here. Problem host sends one version line, but it is split thru several packets and 1st one of them do not contain a newline character. My guess is that find_ssh_ident_string() fails on that 1st packet as strchr(l, '\n') does not find the newline and check_ssh() makes no attempt to fetch a full line and fails. At the same time the 2.2.3 version of the check was quite happy with that 1 packet as it contained enough chars for SSH-%d.%d- sscanf pattern.
Those servers' admins got rid of the trigger by some sshd configuration tweak, but the code is broken it seems. Should there be used a tcp_expect() call or a zbx_tcp_recv_line() from trunk?