GNU/Linux >> Linux Esercitazione >  >> Linux

L'accesso SSH non funziona utilizzando una chiave Senza password?

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

Linux
  1. SSH senza password che utilizza coppie di chiavi pubblica-privata

  2. Come convertire il file PPK in chiavi OpenSSH e accedere utilizzando SSH in Linux?

  3. 3 passaggi per eseguire l'accesso SSH senza password utilizzando ssh-keygen e ssh-copy-id

  4. Come costringo un utente a cambiare una password al primo accesso utilizzando ssh?

  5. SSH da A a B a C, utilizzando la chiave privata su B

Come configurare l'accesso SSH senza password

Ssh – Hai bisogno di un Tty per eseguire Sudo se posso Sudo senza password?

Accesso SSH senza password in 3 semplici passaggi

Connettiti a un server utilizzando SSH su Linux o Mac OS X

Come copiare in remoto file su SSH senza inserire una password

Esegui SSH e SCP senza inserire la password su openSSH