Chiave pubblica SSH: nessun metodo di autenticazione supportato disponibile (server inviato chiave pubblica)


80

Ho una configurazione del server 12.10 in una macchina virtuale con la sua rete impostata su bridge (essenzialmente verrà visto come un computer collegato al mio switch).

Ho installato opensshd tramite apt-gete sono stato in grado di connettermi al server usando putty con il mio nome utente e password.

Ho quindi iniziato a provare a farlo usare l'autenticazione con chiave pubblica / privata. Ho fatto quanto segue:

  1. Ha generato le chiavi usando PuttyGen.
  2. Sposta la chiave pubblica in /etc/ssh/myusername/authorized_keys(sto usando home directory crittografate).
  3. Configurare in questo sshd_configmodo:

    PubkeyAuthentication yes
    AuthorizedKeysFile /etc/ssh/%u/authorized_keys
    StrictModes no
    PasswordAuthentication no
    UsePAM yes
    

Quando mi connetto usando putty o WinSCP, viene visualizzato un messaggio di errore Nessun metodo di autenticazione supportato disponibile (server inviato chiave pubblica).

Se corro sshdin modalità debug, vedo:

PAM: initializing for "username"
PAM: setting PAM_RHOST to "192.168.1.7"
PAM: setting PAM_TTY to "ssh"
userauth-request for user username service ssh-connection method publickey [preauth]
attempt 1 failures 0 [preauth]
test whether pkalg/pkblob are acceptable [preauth[
Checking blacklist file /usr/share/ssh/blacklist.RSA-1023
Checking blacklist file /etc/ssh/blacklist.RSA-1023
temporarily_use_uid: 1000/1000 (e=0/0)
trying public key file /etc/ssh/username/authorized_keys
fd4 clearing O_NONBLOCK
restore_uid: 0/0
Failed publickey for username from 192.168.1.7 port 14343 ssh2
Received disconnect from 192.168.1.7: 14: No supported authentication methods available [preauth]
do_cleanup [preauth]
monitor_read_log: child log fd closed
do_cleanup
PAM: cleanup

Perché sta succedendo e come posso risolverlo?


Nel mio caso, ho due istanze AWS. Uno di questi funziona perfettamente, l'altro funziona quando si collega tramite Intellij Idea, ma non da Putty, ma all'inizio funzionava. Quindi nel mio caso deve trattarsi di stucco
Marian Klühspies il

Risposte:


70

Problema risolto:

Sembra che ci sia stato un problema con il mio file di chiave pubblica. PuttyGen creerà un file di chiave pubblica simile a:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20121022"
AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwu
a6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOH
tr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/u
vObrJe8=
---- END SSH2 PUBLIC KEY ----

Tuttavia, questo non funzionerà, quindi quello che devi fare è aprire la chiave in PuttyGen e quindi copiarla da lì (questo porta la chiave nel giusto formato e in 1 riga):

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022

Incollalo authorized_keyse dovrebbe funzionare.


1
Ho aperto authorized_keysin vi e rimosso tutte le interruzioni di linea e ha funzionato.
Luca

1
dove si trova il file della chiave pubblica? sto usando solo stucco.
Syler,

1
Ho fatto tutto quanto sopra ma il server sta ancora inviando Nessun metodo di autenticazione supportato disponibile (il server ha inviato la chiave pubblica)
Al-Alamin

Come sapevi che non avrebbe funzionato / dove hai trovato il formato previsto?
Michael,

Dove ho bisogno di incollare esattamente quando dici "Incollalo in authorized_keys, allora dovrebbe funzionare". @ F21
Mahender Reddy Yasa,

20
  1. Modifica il /etc/ssh/sshd_configfile.
  2. Cambia PasswordAuthenticatione ChallengeResponseAuthenticationa yes.

3a. Riavvia ssh /etc/init.d/ssh restart.
O
3b. meglio che usiservice sshd restart


anzi, questo è un commento utile se hai problemi a connettere i software vie ftp
cnu,

Per me va bene!
Asinox,

8
Lo scopo completo dell'autenticazione tramite file di chiavi è evitare l' autenticazione con password, quindi in realtà è necessario impostare PasswordAuthenticationsu no.
Pere,

È l'unica risposta che mi ha aiutato. Non avevo bisogno dell'autenticazione con chiave pubblica / privata, ma stavo ricevendo quello strano messaggio.
Serge Rogatch,

Grazie ChallengeResponseAuthentication, mi ha risolto il problema su un Debian 10.0
realtebo il

10

Spero solo che un suggerimento possa aiutare qualcun altro con il mal di testa che ho avuto. F21 ha ragione a dire che è necessario copiare la chiave fuori dalla finestra di PuTTYGen invece di salvare il file, ma dopo la copia, il modo in cui incollare potrebbe avere un impatto significativo sul funzionamento della chiave. Alcuni editor modificheranno il testo mentre si incolla o eseguono operazioni con newline o qualcosa che rende non valido il file authorized_keys.

Quello che ho scoperto essere il meno probabile che si rompa è echeggiare l'intera stringa e reindirizzare l'output sul file. Facendo clic con il pulsante destro del mouse su PuTTY per incollare la stringa della chiave nella riga di comando, funziona in questo modo (con l'esempio sopra riportato):

echo [right-click-to-paste-here] > /etc/ssh/username/authorized_keys

Finirai con questo:

echo ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022 > /etc/ssh/username/authorized_keys

Un altro vantaggio di questo metodo è che puoi aggiungere più chiavi in ​​questo modo usando >> per aggiungere anziché> per sovrascrivere, ad esempio:

echo ssh-rsa AAAAB3<...snip...>rJe8= rsa-key-20121022 >> /etc/ssh/username

Spero che aiuti qualcuno.


Questo non funziona per le chiavi a 4096 bit ... supera il limite terminale per i personaggi penso
Freedo

1
Può essere o meno una buona idea rimuovere questo dalla tua storia di bash in seguito.
Jason Powers Murray l'

@JasonPowersMurray: è una chiave pubblica. Il sistema di crittografia a chiave pubblica è progettato per rimanere sicuro quando la chiave viene pubblicata, quindi è OK registrare le chiavi pubbliche nella cronologia di bash e altrove.
David Cary,

9

Stavamo già utilizzando il giusto tipo di chiave (ppk anziché pem) ..

Nel nostro caso, si è verificato un problema con le autorizzazioni del file per authorized_keys nella cartella dell'utente del server. Deve essere -rw-r - r-- ... Era -rw-rw-r--

ssh è molto schizzinoso riguardo ai permessi dei file.


Grazie per avermi indicato la giusta direzione. Nel nostro caso sia il proprietario che i permessi erano sbagliati.
Zsolti,

come modificare i permessi dei file in quanto non siamo in grado di accedere tramite ssh? qualche altro modo per farlo?
jit

1
Il mio era anche un problema di proprietà, raggruppamento e autorizzazioni. Come mostrato qui ( stackoverflow.com/a/36808935/384670 ), le autorizzazioni che dovevo usare erano 600 per il file e 700 per la directory. Ho anche cambiato il proprietario e il gruppo in questo utente non root in questione.
M Katz,

5

Risolto:

  1. Devi scaricare puttyGEN e generare una chiave pubblica e una privata.
  2. Ho assegnato una password alla mia chiave privata.
  3. quindi configurare la chiave privata in putty. Putty-> SSH-> Auth-> Naviga verso il tuo privato.
  4. Assicurati di avere lo stesso percorso per la chiave privata e pubblica.
  5. È necessario configurare la chiave pubblica sul server. (Nel mio caso ho parlato con il ragazzo del server e ho chiesto se poteva aggiungere la mia chiave pubblica al server). È necessaria la chiave pubblica nell'altro lato (server) della connessione.

2
"Assicurati di avere lo stesso percorso per la chiave privata e pubblica." Non ha niente a che fare con quello. Non devi risiedere la tua chiave pubblica accanto alla tua chiave privata.
user3790897

5

Nel mio caso il motivo era che il file della chiave privata (.ppk) era stato rimosso nell'agente di autenticazione Putty, ovvero Pageant. L'ho appena aggiornato di nuovo a Pageant lì e la connessione ha funzionato perfettamente dopo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.