Como posso armazenar em cache as credenciais Yubikey/U2F ao autenticar por SSH (especificamente Git)?

Como posso armazenar em cache as credenciais Yubikey/U2F ao autenticar por SSH (especificamente Git)?

Eu configurei meuConta GitHub para usar U2Fusando Yubikey (em todo SSH), mas como eu também uso umPrompt do Git bash, portanto, sempre que uso meu terminal, sou solicitado a tocar na minha chave de segurança.

Não entendo muito bem a relação entre as credenciais SSH, a chave e o padrão FIDO U2F, por isso não tenho certeza de como configurar meu ambiente para parar de me avisar sempre que uso meu terminal.

Posso configurá-lo para perguntar apenas, digamos, uma vez por dia, ou uma vez por sessão ou algo assim?

Responder1

Em primeiro lugar, U2F éinacessível por design. Não é simplesmente uma senha; é um protocolo de desafio/resposta, no qual o token recebe um 'desafio' diferente a cada vez e emite assinaturas digitais semsemprerevelando suas chaves secretas para o PC (basicamente como um cartão inteligente). É aí que reside a sua principal força.

O mesmo se aplica às clássicas senhas de uso único do Yubikey. Como o nome diz, eles sãoum tempo, e o servidor nunca aceitará a mesma senha mais de uma vez, nem qualquer senha mais antiga que uma já aceita.

Dito isto, há duas coisas que você pode fazer:

  • Primeiro, descubra o que está pedindo as credenciais, porque é definitivamentenãoSSH. O suporte U2Fpatchesainda não foi incorporado ao OpenSSH e nunca solicitou nenhuma entrada interativa – ele usa apenas pares de chaves SSH, não senha + 2fa.ssh [email protected]

    Da mesma forma, se você estiver realmente enviando HTTPS e não SSH, ainda não há integração U2F na autenticação HTTP, até onde eu sei, então, no máximo, será solicitado o código de 6 dígitos.

    Se você tiver um Yubikey de tamanho normal, verifique se a luz está piscando quando solicitado. Ele pisca apenas enquanto aguarda a confirmação U2F – se estiver estável, enviará uma senha clássica de uso único. E se você pudervero Yubikey digitando uma senha longa, isso não é U2F.

  • Em segundo lugar, para SSHem geral, você pode ativar o recurso de cache/multiplexação de conexão do OpenSSH. Depois de fazer login em um servidor, o OpenSSH manterá essa conexão ativa por vários minutos, mesmo depois de você fechar o shell remoto (ou seja, mesmo depois que o Git terminar suas transferências).

    Para fazer isso, coloque o seguinte no seu ~/.ssh/config:

    Host *
        ControlMaster auto
        ControlPath ~/.ssh/S.%r@%h:%p
        ControlPersist 5m
    

    (Versões mais antigas do OpenSSH não suportam ControlPersist, então você pode manter as outras duas opções, mas precisará iniciar a conexão manualmente com .)ssh -fNM [email protected]

informação relacionada