Depois de ler o código de Net::SSH::KeyManager
, descobri o problema.
Nesta máquina, tenho uma chave pública denominada id_rsa.pub
sem a chave privada correspondente id_rsa
(porque eu uso id_rsa.ppk
, que é a versão PuTTY do arquivo-chave).
Net::SSH::KeyManager
, no entanto, usará somente uma chave se ambos os arquivos públicos e privados estiverem no diretório. Infelizmente, isso também significa que, se encontrar uma chave pública sem a chave privada (ou uma chave privada sem a chave pública), ela lançará imediatamente uma exceção, em vez de simplesmente descartar a chave.
Depois de usar o PuTTYgen para exportar a chave privada do arquivo .ppk
para um arquivo OpenSSH padrão (e, em seguida, modifiquei esse arquivo de acordo com esta resposta ), eu era capaz de conectar usando autenticação de senha ( sem precisando do arquivo ssh / config como mostrado em outra resposta).
Nota: acho que isso é um bug na gema do OpenSSH. Ter uma chave inválida não deve impedi-lo de usar uma chave diferente ou uma senha.