Frage Wie kann ich Yubikey / U2F-Anmeldedaten bei der Authentifizierung über SSH (speziell Git) zwischenspeichern?


Ich habe meine eingerichtet GitHub-Konto, um U2F zu verwenden mit Yubikey (über SSH), aber ich benutze auch einen Git Bash AufforderungJedes Mal, wenn ich mein Terminal verwende, werde ich aufgefordert, meinen Sicherheitsschlüssel zu berühren.

Ich verstehe die Beziehung zwischen den SSH-Anmeldeinformationen, dem Schlüssel und dem FIDO U2F-Standard nicht ganz, daher bin ich mir nicht sicher, wie ich meine Umgebung einrichten soll, damit sie mich nicht jedes Mal auffordert, wenn ich mein Terminal verwende.

Kann ich es so konfigurieren, dass es nur fragt, einmal am Tag oder einmal pro Sitzung oder so etwas sagt?


4
2018-02-02 00:56


Ursprung


Es ist möglich, dass Sie aufgefordert werden, den Schlüssel als Ergebnis eines ausgeführten Profilskripts zu berühren. Prüfen .profile und .bashrc in Ihrem Home-Verzeichnis in Ihrem Git-Terminal für alles, was mit SSH zu tun hat oder anderweitig diesen Schlüssel benötigt. - deed02392


Antworten:


Zuallererst ist U2F nicht cache-by-design. Es ist nicht einfach ein Passwort; Es handelt sich um ein Challenge / Response-Protokoll, bei dem das Token jedes Mal eine andere "Challenge" erhält und ohne digitale Signaturen auskommt je enthüllt seine geheimen Schlüssel zum PC (im Grunde wie eine Smartcard). Das ist, wo seine Hauptstärke liegt.

Gleiches gilt für Yubikey's klassische Einmalpasswörter. Wie der Name sagt, sind sie einmal, und der Server akzeptiert niemals dasselbe Passwort mehr als einmal, noch ein älteres Passwort als ein bereits akzeptiertes.

Davon abgesehen gibt es zwei Dinge, die Sie tun können:

  • Erstens, herauszufinden, was Sie für die Anmeldeinformationen fragt, weil es definitiv ist nicht SSH. Die U2F-Unterstützung Patches wurden noch nicht in OpenSSH zusammengeführt, und ssh git@github.com hat nie nach interaktiven Eingaben gefragt - es benutzt immer nur SSH-Schlüsselpaare, nicht Passwort + 2fa.

    Ähnlich, wenn Sie tatsächlich über HTTPS und nicht über SSH drängen, gibt es, soweit ich weiß, noch keine U2F-Integration in die HTTP-Authentifizierung, so dass Sie höchstens nach dem sechsstelligen Code gefragt werden.

    Wenn Sie ein Yubikey in voller Größe haben, prüfen Sie, ob das Licht blinkt, wenn Sie dazu aufgefordert werden. Es blinkt nur, wenn auf die U2F-Bestätigung gewartet wird - wenn es stabil ist, wird stattdessen ein klassisches Einmal-Passwort gesendet. Und wenn du kannst sehen der Yubikey tippt ein langes Passwort ein, das ist nicht U2F.

  • Zweitens, für SSH Im Algemeinen, können Sie die Verbindungs-Caching / Multiplexing-Funktion von OpenSSH aktivieren. Nachdem Sie sich bei einem Server angemeldet haben, hält OpenSSH diese Verbindung mehrere Minuten lang aktiv, selbst nachdem Sie die Remote-Shell geschlossen haben (d. H. Auch nachdem Git seine Übertragungen beendet hat).

    Um dies zu tun, legen Sie folgendes in Ihren ~/.ssh/config:

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

    (Ältere OpenSSH-Versionen unterstützen ControlPersist nicht, so dass Sie die anderen beiden Optionen beibehalten können, aber Sie müssen die Verbindung manuell mit starten ssh -fNM git@github.com.)


3
2018-02-02 05:51



Das Aufrechterhalten der SSH-Verbindung ist eine großartige Lösung, danke. Erwähnenswert für zukünftige Leser ist, dass Sie wirklich sicherstellen wollen, dass der Zugriff auf die ControlPath-Datei sehr eingeschränkt ist. Um einen Schaden zu minimieren, der entstehen könnte, wenn ein Angreifer die offene Verbindung erhält, setze ich meine Host-Leitung auf Host github.com - Mark McDonald