ssh non consente più l'autenticazione della chiave pubblica

22

La mia macchina ha recentemente smesso di accettare l'autenticazione della chiave pubblica in entrata. Ho un desktop di Ubuntu 11.04 che scrivo da una macchina Windows. Io uso stucco con spettacolo. Sono in grado di connettermi ma solo con l'autenticazione della password interattiva, non con la mia chiave rsa che ho configurato.

Ho già verificato che la chiave è elencata in ~ / .ssh / authorized_keys. Come posso risolvere questo problema e cosa controllo?

    
posta Andrew Redd 19.10.2011 - 21:27
fonte

9 risposte

28

Se l'autenticazione della chiave pubblica non funziona: assicurati che sul lato server, la tua directory home ( ~ ), la directory ~/.ssh e il file ~/.ssh/authorized_keys , siano tutti scritti solo da il loro proprietario . In particolare, nessuno di questi deve essere scrivibile dal gruppo (anche se l'utente è solo nel gruppo). chmod 755 o chmod 700 è ok, chmod 770 non lo è.

Che cosa controllare quando qualcosa non va:

  • Esegui ssh -vvv per vedere molti output di debug. Se pubblichi una domanda che ti chiede perché non riesci a connetterti con ssh, includi questo output (potresti voler rendere anonimi i nomi di host e utenti).
  • Se puoi, controlla i log del server in /var/log/auth.log .
  • Se l'autenticazione della chiave pubblica non funziona, controlla di nuovo le autorizzazioni, in particolare il bit di gruppo (vedi sopra).
risposta data Gilles 20.10.2011 - 20:00
fonte
9

Mi sono imbattuto nella stessa cosa e alla fine ho capito che era perché ho crittografato la mia home directory. SSH non può leggere il file authorized_keys finché non si accede, quindi in pratica obbliga a autenticare prima la password. Vedi la sezione sulla home directory criptata sul seguente link:

link

    
risposta data Willie Wheeler 11.07.2012 - 08:48
fonte
5

Mi assicuro che tu abbia le tue impostazioni in / etc / ssh / sshd_config corrette.

Per forzare l'uso della sola PKI e per non consentire alle password di trovare la linea

#PasswordAuthentication yes 

nel tuo file, decommentalo e impostalo su

PasswordAuthenticate no

Vorrei anche leggere il bilancio delle impostazioni per assicurarmi che abbiano senso. In particolare, cerca di assicurarti di utilizzare le chiavi RSA poiché DSA è noto per essere stato compromesso.

    
risposta data cmdematos 19.10.2011 - 22:00
fonte
3

Se controlli le autorizzazioni sulle directory e c'è un "." subito dopo, è possibile che selinux sia abilitato, che si bloccherà con lo scambio di chiavi e di default l'identificazione manuale della password.

Puoi disabilitare SELinux per la risoluzione dei problemi seguendo le istruzioni qui: link , o semplicemente modificare il file / etc / selinux / config e cambiarlo da" enforcing "a" disabled ".

Spero che questo aiuti.

    
risposta data tweekd 30.07.2012 - 00:28
fonte
2

Ho risolto questo problema annullando il commento "PasswordAuthentication yes" in / etc / ssh / sshd_config.

    
risposta data Ben Ernest 10.12.2013 - 07:08
fonte
1

A causa della necessità di risolvere i problemi di comunicazione tra due macchine diverse, avevo due chiavi private in ~/.ssh sul lato client.

Invece di configurare ciascun host del server con la rispettiva chiave privata in ~/.ssh/identity come avrei dovuto fare, avevo la chiave secondaria (e in questo caso sbagliata) configurata per tutti gli host:

Host *
IdentityFile ~/.ssh/identity_b

Correggere ~/.ssh/identity ha risolto il problema:

Host a
IdentityFile ~/.ssh/identity_a
Host b
IdentityFile ~/.ssh/identity_b
    
risposta data Uli Klumpp 24.04.2014 - 03:33
fonte
1

Una possibile causa del problema è la presenza di chiavi DSA, ma ora SSH (apparentemente) ha come impostazione predefinita le chiavi RSA. Ho avuto il problema durante l'aggiornamento alla 16.04. Puoi vedere più qui ma la risposta breve è aggiungere quanto segue a ~/.ssh/config :

PubkeyAcceptedKeyTypes ssh-dss
    
risposta data DeegC 25.05.2016 - 18:34
fonte
0

Ho avuto lo stesso problema ma cambiare le autorizzazioni con chmod non mi ha aiutato, dal momento che risultava che non avevo la proprietà del file ~/.ssh/authorized_keys . Puoi modificare la proprietà della directory .ssh con:

sudo chown -R "$USER" ~/.ssh
    
risposta data Nick 23.09.2017 - 08:30
fonte
-1

In qualche modo questo ha funzionato per me:

root @ kaiser: ~ # vim / etc / ssh / sshd_config

Cambia questa linea da si a no  28 StrictModes no

Riprova

sysadmin @ suselinux1: ~ & gt; con sysadmin kaiser Benvenuti in Ubuntu 12.04.1 LTS (GNU / Linux 3.2.0-25-generic i686)

Ultimo accesso: ven 9 nov 15:40:11 2012 dalla 10.1.3.25 sysadmin @ kaiser: ~ $ date vie nov 9 17:53:11 CST 2012 sysadmin @ kaiser: ~ $

    
risposta data theunbekanntshadow 10.11.2012 - 01:06
fonte

Leggi altre domande sui tag