[Nitrokey] SSH / Git: sign_and_send_pubkey: signing failed: agent refused operation

Guten Morgen,

gestern habe ich meinen Nitrokey eingerichtet.
Heute morgen, wollte ich voller Elan meiner Github Repo clonen und bekomme dann immer die folgenden Meldung:

malte@pinetree:~/Entwicklung$ git clone git@github.com:beli3ver/bashlyblog.git
Klone nach 'bashlyblog' ...
sign_and_send_pubkey: signing failed: agent refused operation
git@github.com: Permission denied (publickey).
fatal: Konnte nicht vom Remote-Repository lesen.

Bitte stellen Sie sicher, dass die korrekten Zugriffsberechtigungen bestehen
und das Repository existiert.

Also hier ist meine Key:

malte@pinetree:~/Entwicklung$ gpg --card-status
Reader ...........: 20A0:4108:0000000000000000000086F0:0
Application ID ...: D2760001240103030005000086F00000
Version ..........: 3.3
Manufacturer .....: ZeitControl
Serial number ....: 000086F0
Name of cardholder: [nicht gesetzt]
Language prefs ...: de
Sex ..............: unbestimmt
URL of public key : [nicht gesetzt]
Login data .......: [nicht gesetzt]
Signature PIN ....: zwingend
Key attributes ...: rsa4096 rsa4096 rsa4096
Max. PIN lengths .: 64 64 64
PIN retry counter : 3 0 3
Signature counter : 0
KDF setting ......: on
Signature key ....: C294 1D96 20A1 A407 8386  766D 4E10 54CB 9038 13CF
      created ....: 2019-07-30 09:28:54
Encryption key....: 3B60 B251 86F6 5571 962B  64B6 8B6A 51A7 49C6 4057
      created ....: 2019-07-30 09:28:54
Authentication key: 4999 3101 A190 F908 395D  507B 162B 2909 48E3 F55A
      created ....: 2019-07-30 09:29:50
General key info..: pub  rsa4096/4E1054CB903813CF 2019-07-30 Malte Kiefer <malte.kiefer@mailbox.org>
sec>  rsa4096/4E1054CB903813CF  erzeugt: 2019-07-30  verfällt: 2022-07-29
                                Kartennummer:0005 000086F0
ssb>  rsa4096/8B6A51A749C64057  erzeugt: 2019-07-30  verfällt: 2022-07-29
                                Kartennummer:0005 000086F0
ssb>  rsa4096/162B290948E3F55A  erzeugt: 2019-07-30  verfällt: 2022-07-29
                                Kartennummer:0005 000086F0

Hier die entsprechenden Dateien die ich für den Agent anpassen muss:

malte@pinetree:~/Entwicklung$ cat /home/malte/.gnupg/gpg.conf 
use-agent
malte@pinetree:~/Entwicklung$ cat /home/malte/.gnupg/gpg-agent.conf 
enable-ssh-support
malte@pinetree:~/Entwicklung$ cat /home/malte/.bashrc | tail -n 5

unset SSH_AGENT_PID
if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
   export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
fi

Dann noch die Ausgabe der SSH_AUTH_SOCK

malte@pinetree:~/Entwicklung$ echo $SSH_AUTH_SOCK /run/user/1000/gnupg/S.gpg-agent.ssh

Dann bin ich hin und habe mit ssh-add -L mir meinen öffentlich Schlüssel anzeigen lassen:

ssh-rsa AAAAB3NzaC1yc2EAAA.......................................== cardno:0005000086F0

und diesen bei Github hinzugefügt. Leider habe ich weiter über SSH / Git keinen Zugriff. Habe ich hier was vergessen?
Noch ein paar Infos zum System:

malte@pinetree:~/Entwicklung$ cat /etc/debian_version 
10.0
malte@pinetree:~/Entwicklung$ uname -a
Linux pinetree 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5+deb10u1 (2019-07-19) x86_64 GNU/Linux
malte@pinetree:~/Entwicklung$ gpg --version
gpg (GnuPG) 2.2.12
libgcrypt 1.8.4
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: /home/malte/.gnupg
Unterstützte Verfahren:
Öff. Schlüssel: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Verschlü.: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
           CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Komprimierung: nicht komprimiert, ZIP, ZLIB, BZIP2
malte@pinetree:~/Entwicklung$

Du kannst dich bei Github probeweise per

ssh git@github.com

verbinden. Damit kannst du gucken, ob die Verbindung überhaupt funktioniert (was vermutlich nicht der Fall ist), aber auch mittels des flags -vvv mehr Informationen über die Verbindung erhalten. Vielleicht siehst du da bereits Probleme im Log, die helfen dem Problem auf den Grund zu gehen.

Ich nehme an, du hast bereits den gpg-agent mal neu gestartet? Im großen und ganzen sehen deine Settings erst einmal richtig aus…

PS: Bitte klone Ergebnisse, die wir hier finden, dann gleich auch im Kuketz-blog Forum, falls in Zukunft jemand darauf stößt.

Also, ich konnte das Problem beheben.
Nachdem ich das in die .bashrc hinzugefügt habe:

export GPG_TTY=$(tty)
gpg-connect-agent updatestartuptty /bye >/dev/null

Und wichtig war meinen Rechner neuzustarten. Den Agenten nur neustarten oder Abmelden von der Bash hat nicht gereicht. Gelegentlich tritt es wieder auf, dann muss ich den Nitrokey kurz vom PC trennen und wieder verbinden.

Hmm - hier noch “my two cents”, gpgconf --kill all sollte genügen. Der Rechner muss nicht neu gestartet werden - die Shell aber das script neu sourcen.
Du kannst in ~/.gnupg/gpg-agent.conf noch die Zeilen
default-cache-ttl-ssh 34560000
max-cache-ttl-ssh 34560000
einfügen. Damit wirst Du nur einmal nach Deinem Pin gefragt. Der Reset der ttl findet entweder mit dem Shutdown statt oder wenn du den NK ziehst.
Leider hat GnuPG’s scdaemon einen Bug und meldet beim einstecken nicht automatisch die Karte wieder an. Da hilft ein gpg --card-status
Wenn das failed, dann den bekannten gpg-connect-agent updatestartuptty /bye eingeben