Во-первых, U2F не кешируется по дизайну . Это не просто пароль; это протокол «вызов / ответ», в котором токен каждый раз получает различный «вызов» и выдает цифровые подписи, даже не раскрывая свои секретные ключи для ПК (в основном, как смарт-карта). Вот в чем его главная сила.
То же самое относится и к классическим одноразовым паролям Yubikey. Как следует из названия, они одноразовые, и сервер никогда не примет один и тот же пароль более одного раза, а также пароль, который уже не принят.
При этом, есть две вещи, которые вы можете сделать:
Во-первых, выясните, что запрашивает учетные данные, потому что это определенно не SSH. Патчи поддержки U2F еще не были объединены с OpenSSH, и
ssh git@github.com
никогда не запрашивали никакого интерактивного ввода - он всегда использует только пары ключей SSH, а не пароль + 2fa.Точно так же, если вы на самом деле используете HTTPS, а не SSH, насколько я знаю, по-прежнему отсутствует интеграция U2F в HTTP-аутентификацию, так что в большинстве случаев вас попросят ввести 6-значный код.
Если у вас полноразмерный Yubikey, проверьте, мигает ли его индикатор при появлении запроса. Он только мигает при ожидании подтверждения U2F - если он устойчивый, вместо этого он отправит классический одноразовый пароль. И если вы видите, как Yubikey набирает длинный пароль, это не U2F.
Во-вторых, для SSH в целом вы можете включить функцию кэширования / мультиплексирования соединений OpenSSH. После входа на сервер OpenSSH будет поддерживать это соединение в течение нескольких минут даже после закрытия удаленной оболочки (т.е. даже после того, как Git завершит свои передачи).
Чтобы сделать это, поместите следующее в свой
~/.ssh/config
:Host * ControlMaster auto ControlPath ~/.ssh/S.%r@%h:%p ControlPersist 5m
(Старые версии OpenSSH не поддерживают ControlPersist, поэтому вы можете оставить две другие опции, но вам нужно будет установить соединение вручную
ssh -fNM git@github.com
.)