If you run ssh testuser:20@<ip>, then the "ssh" program--which I'll assume is the OpenSSH version--will transmit "testuser:20" to the remote SSH server as the login name for the connection.
An SSH server is free to interpret the login name however it wants to. The OpenSSH server logs the full login name received from the client, and then discards a colon and any text following it from the login name:
if ((r = sshpkt_get_cstring(ssh, &user, NULL)) != 0 ||
(r = sshpkt_get_cstring(ssh, &service, NULL)) != 0 ||
(r = sshpkt_get_cstring(ssh, &method, NULL)) != 0)
goto out;
debug("userauth-request for user %s service %s method %s", user, service, method);
debug("attempt %d failures %d", authctxt->attempt, authctxt->failures);
if ((style = strchr(user, ':')) != NULL) <-- Check for a colon
*style++ = 0; <-- Discard it
So the name including the colon and the following text isn't available during the remainder of the session.
It seems the only way to change this behavior with the OpenSSH server would be to change the source code of the ssh server program and use the altered version. OpenSSH is open source, so that's an option if the feature is important enough to you.
Alternately, you could look at alternative ssh servers--most or all of which will be commercial products--to see if one of them offers this feature.