O vncviewer rodando em A fala (via protocolo vnc) para um vncserver (agindo como um servidor X) ou diretamente para o servidor X (com a extensão vnc) rodando em B.
Então, realmente todo o protocolo X acontece exclusivamente em B (mesmo que sejam exibidos via vnc em A), então as xhost e DISPLAY ops (específicas do protocolo X) feitas dentro dos terminais exibidos no vncviewer se aplicam diretamente para B.
Normalmente você não deveria precisar de xhost (ou talvez adicionar localhost se necessário).
Normalmente, DISPLAY já deve estar definido para o :N correspondente ao vncserver em execução no B.