
我已經設定了我的使用 U2F 的 GitHub 帳戶使用 Yubikey (全部透過 SSH),但因為我也使用Git bash 提示符,所以每次我使用終端時,系統都會提示我觸摸我的安全金鑰。
我不太了解 SSH 憑證、金鑰和 FIDO U2F 標準之間的關係,因此我不確定如何設定我的環境以停止在每次使用終端時提示我。
我可以將其配置為僅詢問一次,例如每天一次,或每次會話一次或其他什麼?
答案1
首先,U2F是設計上不可緩存。它不僅僅是一個密碼;它是一個密碼。這是一個挑戰/響應協議,其中令牌每次都會收到不同的“挑戰”,並且無需發布數位簽名即可曾經向 PC 洩露其密鑰(基本上就像智慧卡)。這就是它的主要優勢所在。
這同樣適用於 Yubikey 的經典一次性密碼。正如名字所說,他們是一度,而且伺服器絕不會多次接受相同的密碼,也不會接受任何早於已接受密碼的密碼。
話雖如此,您可以做兩件事:
首先,弄清楚是什麼要求您提供憑證,因為它肯定是不是SSH。 U2F 支持補丁尚未合併到 OpenSSH 中,也從未要求任何互動式輸入 - 它只使用 SSH 金鑰對,而不是密碼+2fa。
ssh [email protected]
同樣,如果您實際上是透過 HTTPS 而不是 SSH 進行推送,據我所知,HTTP 身份驗證中仍然沒有 U2F 集成,因此最多會要求您提供 6 位元代碼。
如果您有全尺寸的 Yubikey,請在出現提示時檢查其指示燈是否有閃爍。它僅在等待 U2F 確認時閃爍 - 如果它穩定,它將發送一個經典的一次性密碼。如果可以的話看Yubikey 輸入長密碼,這不是 U2F。
二、對於SSH一般來說,您可以啟用OpenSSH的連線快取/復用功能。登入伺服器後,即使您關閉遠端 shell(即即使 Git 完成傳輸後),OpenSSH 也會使該連線保持活動狀態數分鐘。
為此,請將以下內容放入您的
~/.ssh/config
:Host * ControlMaster auto ControlPath ~/.ssh/S.%r@%h:%p ControlPersist 5m
(較舊的 OpenSSH 版本不支援 ControlPersist,因此您可以保留其他兩個選項,但需要使用 手動啟動連線。)
ssh -fNM [email protected]