Não estou ciente de nenhum processo de "handshaking" no SSH. A partir das etapas descritas, no entanto, parece que você não está dizendo ao SSH para usar a chave em id_dsa
para autenticação, o que causaria um fallback na autenticação de senha. Quando você tiver fornecido a senha, talvez algum daemon de cache de senha ou chave em execução no cliente armazene essas informações e as reutilize nas conexões subseqüentes?
Poderia, por acaso, ser o que você está vendo?
Em caso afirmativo, basta dizer ao SSH para usar id_dsa
para autenticação quando o servidor remoto souber sobre a chave pública correspondente e permitir que ela seja usada para autenticação.
A página man do OpenSSH diz:
-i identity_file Selects a file from which the identity (private key) for RSA or DSA authentication is read. The default is ~/.ssh/identity for protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for protocol version 2. (...)
e se o Solaris for algo similar, a menos que você esteja em ~ / .ssh ao executar o ssh-keygen, o SSH não saberá usar ./id_dsa
.