Soffrivi del seguente errore:
L'agente ha ammesso di non aver firmato utilizzando la chiave.
Questo è un messaggio purtroppo non diagnostico. Ci sono (almeno) due classi di problemi che potrebbe risolvere:
La chiave non è caricata
Per la maggior parte dei problemi, ciò significa che il tuo ssh-agent
non ha chiavi ssh caricate accettate per il tuo account sul server di destinazione. In questo caso, come notato dalla risposta di @Networker a questa domanda, la soluzione è piuttosto semplice:aggiungi la chiave:
ssh-add
Se la chiave si trova in una posizione non predefinita, dovrai comunicarlo a ssh-add
:
ssh-add /path/to/key
L'agente non è in grado di comprendere la chiave
Questo era il bug 754028 di GNOME, risolto in Seahorse 3.29.90 (stabile 3.30 rilasciata il 03-09-2018, inclusa in Ubuntu 18.10, Fedora 29 e probabilmente Red Hat/CentOS 9). Seahorse prima della 3.29.90 (e quindi GNOME Keyring) non poteva né creare né aggiungere nuovi tipi di chiavi come ed25519 e chiavi generate con ssh-keygen -o -a 100
(come suggerito dal tutorial Secure Secure Shell).
Diagnosi di questo problema:
ssh myserver
fallisce con "l'agente ssh ha ammesso errore"SSH_AUTH_SOCK= ssh myserver
funziona bene- Conclusione:
gnome-keyring
non può gestire chiavi complesse
Dato che ho appena trovato una valida soluzione per questo bug, e non sembra essere stato pubblicato da nessuna parte (tranne il commento che ho appena aggiunto a un bug di Ubuntu), lo inserirò qui.
Soluzione alternativa: Avvia un nuovo ssh-agent
utilizzando lo stesso socket di quello di gnome-keyring
:
ssh-agent -a $SSH_AUTH_SOCK
Questo avvia una nuova istanza di ssh-agent
(sovrascrivendo l'istanza meno capace di GNOME), quindi non conterrà alcuna chiave (nonostante ciò che seahorse
dice, dal momento che è legato al vecchio agente). Dovrai aggiungerli tramite ssh-add
come indicato in La chiave non è stata caricata sezione precedente.
Dovrai eseguirlo ogni volta che accedi (o aggiungerlo manualmente ai tuoi script di avvio). Se vuoi preservare il vecchio socket, esegui mv $SSH_AUTH_SOCK $SSH_AUTH_SOCK.broken
prima.
Ho risolto il problema semplicemente eseguendo questo comando sulla macchina locale (dopo aver generato la chiave):
$ ssh-add