Como posso fazer o cache das credenciais do Yubikey / U2F ao autenticar por SSH (especificamente pelo Git)?

4

Eu configurei minha conta do GitHub para usar o U2F usando o Yubikey (todo SSH), mas como eu também uso um prompt Git bash , então toda vez que eu uso meu terminal, eu é 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 interromper o aviso sempre que uso meu terminal.

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

    
por Mark McDonald 02.02.2016 / 01:56

1 resposta

3

Primeiro de tudo, o U2F é não encaixável pelo 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 sem sempre revelar suas chaves secretas para o PC (basicamente como um cartão inteligente). É aí que reside sua principal força.

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

Isso dito, há duas coisas que você pode fazer:

  • Primeiro, descubra o que está pedindo as credenciais, porque definitivamente não é SSH. Os patches do U2F ainda não foram mesclados no OpenSSH, e ssh [email protected] nunca pediu por nenhum entrada interativa - só usa os pares de chaves SSH, não a senha + 2fa.

    Da mesma forma, se você estiver realmente controlando o HTTPS e não o SSH, ainda não há integração do U2F na autenticação HTTP, até onde eu saiba, então, no máximo, seria 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 só pisca quando estiver aguardando a confirmação do U2F - se estiver estável, ele enviará uma senha única e clássica em vez disso. E se você puder ver o Yubikey digitando uma senha longa, isso não é U2F.

  • Em segundo lugar, para SSH em geral , você pode ativar o recurso de cache / multiplexação de conexão do OpenSSH. Depois de efetuar login em um servidor, o OpenSSH manterá essa conexão ativa por vários minutos, mesmo após você fechar o shell remoto (ou seja, mesmo após o Git concluir 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 você precisará iniciar a conexão manualmente com ssh -fNM [email protected] .)

por 02.02.2016 / 06:51