Mi chiedo se sia possibile utilizzare un Yubikey per sbloccare ad esempio una chiave GnuPG su un server, quindi posso in qualche modo passare il token generato dallo YubiKey su SSH al server in modo semplice?
Mi chiedo se sia possibile utilizzare un Yubikey per sbloccare ad esempio una chiave GnuPG su un server, quindi posso in qualche modo passare il token generato dallo YubiKey su SSH al server in modo semplice?
GnuPG non utilizza alcun token generato da Yubikey, ma lo stick implementa invece il protocollo smart card OpenPGP. Le chiavi sono memorizzate su YubiKey, che esegue tutte le operazioni crittografiche a chiave pubblica / privata. La protezione speciale si basa sul fatto che le chiavi non possono mai lasciare lo YubiKey, quindi un utente malintenzionato potrebbe utilizzare al massimo la chiave (temporaneamente, purché abbia accesso allo stick sbloccato), ma non riuscirà ad afferrarlo completamente .
GnuPG ha una funzione chiamata l'inoltro dell'agente . Si riduce principalmente a configurare gpg-agent
per fornire uno speciale socket aggiuntivo utilizzato solo per operazioni specifiche:
extra-socket /home/<user>/.gnupg/S.gpg-agent.extra
Quindi configurare SSH per inoltrare tutte le comunicazioni sul socket al server remoto:
RemoteForward /home/<user>/.gnupg/S.gpg-agent /home/<user>/.gnupg/S.gpg-agent.extra
Altre spiegazioni che includono alcuni suggerimenti su nitpicks sono disponibili nella pagina wiki linkata sopra.
Nelle nuove versioni delle distribuzioni di GnuPG o Linux i percorsi dei socket possono cambiare. Questi possono essere trovati tramite
$ gpgconf --list-dirs agent-extra-socket
e
$ gpgconf --list-dirs agent-socket
Quindi aggiungi questi percorsi alla configurazione SSH:
Host remote
RemoteForward <remote socket> <local socket>
Soluzione rapida per copiare le chiavi pubbliche:
scp .gnupg/pubring.kbx remote:~/.gnupg/
Sul dispositivo remoto, attiva l'agente GPG:
echo use-agent >> ~/.gnupg/gpg.conf
Sulla macchina remota, modifica anche la configurazione del server SSH e aggiungi questo parametro (/ etc / ssh / sshd_config):
StreamLocalBindUnlink yes
Riavvia il server SSH, riconnettiti al computer remoto, quindi dovrebbe funzionare.