Até onde eu sei, o comando vncserver apenas solicita uma senha se o arquivo de senha (por padrão, $ HOME / .vnc / passwd) estiver ausente - normalmente na primeira vez que for executado para um usuário em particular. Você pode criar scripts para essa interação inicial do vncserver usando 'esperar' ou pré-criar o arquivo de senhas do usuário chamando o utilitário vncpasswd via antes de executar o vncserver pela primeira vez; por exemplo. [CUIDADO: isso é absolutamente mínimo, você deve adicionar algumas verificações de integridade se isso for usado em um ambiente sério]
#!/bin/sh
prog=/usr/bin/vncpasswd
mypass="newpass"
/usr/bin/expect <<EOF
spawn "$prog"
expect "Password:"
send "$mypass\r"
expect "Verify:"
send "$mypass\r"
expect eof
exit
EOF
Se você não quiser (ou não pode) usar 'esperar', então existem vários hacks disponíveis na web - senhas VNC aparentemente usam uma forma de criptografia DES, então pesquisando com os termos 'VNC' 'DES '' password 'deve te dar o que você precisa (eu não vou linkar aqui já que eu não posso garantir nenhum em particular).
Para completar, note que o padrão 'Desktop Sharing' do Ubuntu usa vino, e a senha para que parece ser simplesmente codificada em base64, então é possível configurá-la diretamente, por exemplo
gsettings set org.gnome.Vino vnc-password "$(echo -n "newpass" | base64)"
Espero que isso ajude