Depois de algumas horas de escavação, eu finalmente descobri porque meu computador parou de me pedir minha (s) chave (s) usando o gnome ssh-askpass. Foi muito simples, mas demorei para descobrir porque ... bem ... a maioria das pessoas que estão tendo problemas semelhantes é por uma razão completamente diferente (ou seja, o ssh-agent não está funcionando).
No meu caso, eu tinha muitas chaves em ~/.ssh
, então o que eu fiz foi mover todas elas, exceto id_rsa
em um subdiretório: ~/.ssh/other_keys
. Isso funcionou com o propósito de acessar alguns computadores usando apenas a opção de linha de comando -i
como em:
ssh -i ~/.ssh/other_keys/topsecret domain
Caso contrário, você terá que dizer ao SSH para não testar todas as chaves encontradas em seu diretório ~/.ssh
(porque quando isso acontece, ele esgota o número de tentativas que normalmente é bem pequeno, como 3 ou 5.)
Para corrigir esse problema, você também pode fazer isso:
ssh -i ~/.ssh/topsecret -o 'IdentitiesOnly yes' domain
O que é muita digitação (sim, você também pode adicioná-lo ao seu arquivo de configuração, mas se isso é apenas para um teste rápido, isso é um aborrecimento.)
Então ... tudo isso funciona muito bem para quando eu quero conectar uma vez aqui ou uma vez lá, mas é doloroso quando eu quero ir para um dos meus servidores principais porque ssh
agora me pede a minha senha cada acesso, mesmo que meus ssh-agent
e ssh-askpass
estejam configurados corretamente.
Então ... o que dá?
De alguma forma, quando você inicia ssh-add
, ele adiciona automaticamente as chaves ao ssh-agent
sem pedir suas senhas. Então, quando você precisar usar a chave, ela iniciará automaticamente seu ssh-askpass
(sem necessidade de uma variável com esse nome em seu ambiente, btw), onde você poderá inserir sua senha e seguir em frente.
Se as chaves forem definidas em um subdiretório, elas não serão encontradas, portanto, não serão adicionadas ao ssh-agent
e, quando você usar ssh
, elas não serão encontradas no ssh-agent
e, portanto, pede sua senha diretamente em seu console e não em uma janela pop-up do gnome.
Mover as chaves de volta diretamente para ~/.ssh
corrige o problema, mas isso não é realmente uma boa solução, pois quebra o ssh -i ...
novamente. (Eu sei, existe a opção -o ...
para dizer ao ssh para usar essa única chave e resolver esse outro problema. Mas eu acho que o ssh deve testar com a chave especificada da linha de comando PRIMEIRO e isso resolveria ambos os meus problemas. ...)
Então ... quando eu executo o seguinte comando:
ssh-add -D
Ele redefine as chaves ssh-agent
(1) excluindo todas as chaves atualmente existentes; e (2) reinstalar todas as chaves encontradas em ~/.ssh
sem me pedir nenhuma senha (pelo menos não no momento em que executo o comando ssh-add
).
Haveria uma maneira de solicitar que ssh-add
(ou qualquer outra ferramenta) também adicionasse as chaves encontradas em um diretório diferente, como meu subdiretório ~/.ssh/other_keys
, sem precisar inserir todas as senhas corretamente?