Você está fazendo:
[ "$var" -ne password ]
-ne (não igual) é um operador inteiro de [ , ou seja, ele espera inteiros em ambos os lados.
Mas você tem var=":" no início e apesar de estar read -ing entrada do usuário e colocar isso em var , presumivelmente a entrada não é um inteiro, levando à mensagem de erro.
Em qualquer caso, se fosse um inteiro, a verificação falharia, porque password é uma string para começar.
Se você quiser comparar strings por igualdade, o operador é = :
[ "$var" = password ]
Não-igualdade:
[ "$var" != password ]