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]
.)