code: func (t *proxySubsys) doHandshake(clientAddr net.Addr, clientConn io.ReadWriter, serverConn io.ReadWriter) {
  	// on behalf of a client ask the server for it's version:
  	buff := make([]byte, sshutils.MaxVersionStringBytes)
  	n, err := serverConn.Read(buff)
  	if err != nil {
  		t.log.Error(err)
  		return
  	}
  	// chop off extra unused bytes at the end of the buffer:
  	buff = buff[:n]
  
  	// is that a Teleport server?
  	if bytes.HasPrefix(buff, []byte(sshutils.SSHVersionPrefix)) {
  		// if we're connecting to a Teleport SSH server, send our own "handshake payload"
  		// message, along with a client's IP:
  		hp := &sshutils.HandshakePayload{
  			ClientAddr: clientAddr.String(),
  		}
  		payloadJSON, err := json.Marshal(hp)
  		if err != nil {
  			t.log.Error(err)
  		} else {
  			// send a JSON payload sandwitched between 'teleport proxy signature' and 0x00:
  			payload := fmt.Sprintf("%s%s\x00", sshutils.ProxyHelloSignature, payloadJSON)
  			n, err = serverConn.Write([]byte(payload))
  			if err != nil {
  				t.log.Error(err)
  			}
  		}
  	}
  	// forwrd server's response to the client:
  	_, err = clientConn.Write(buff)
  	if err != nil {
  		t.log.Error(err)
  	}
  }
docs: // doHandshake allows a proxy server to send additional information (client IP)
  // to an SSH server before establishing a bridge