ssh non consente più l'autenticazione con chiave pubblica


22

La mia macchina ha recentemente smesso di accettare l'autenticazione con chiave pubblica in entrata. Ho un desktop Ubuntu 11.04 in cui ssh da un computer Windows. Uso lo stucco con il concorso. Sono in grado di connettermi ma solo con l'autenticazione con password interattiva, non con la mia chiave rsa che ho impostato.

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


2
In primo luogo verificare che tutti e tre ~, ~/.sshe ~/.ssh/authorized_keyssono scrivibili solo da te (in particolare il permesso di scrittura di gruppo no). Cerca le /var/log/auth.logvoci di registro create al momento dei tentativi di accesso. Copiali e incollali nella tua domanda (modificando i nomi per la privacy, se lo desideri). Controlla anche se il problema è puramente sul lato server o meno: copia la chiave privata sul computer Linux (dovrai convertire il file della chiave privata di PuTTY nel formato OpenSSH) e vedere se ssh localhostfunziona.
Gilles 'SO- smetti di essere malvagio' il

la mia home directory era scrivibile per qualche motivo. Ciò l'ha risolto. Mettilo come risposta in modo che io possa accettarlo.
Andrew Redd,

Risposte:


28

Se l'autenticazione con chiave pubblica non funziona: assicurati che sul lato server, la tua home directory ( ~), la ~/.sshdirectory e il ~/.ssh/authorized_keysfile siano tutti scrivibili solo dal loro proprietario . In particolare, nessuno di essi deve essere scrivibile dal gruppo (anche se l'utente è solo nel gruppo). chmod 755o chmod 700va bene, chmod 770no.

Cosa controllare quando qualcosa non va:

  • Esegui ssh -vvvper vedere un sacco di output di debug. Se pubblichi una domanda che ti chiede perché non riesci a connetterti con ssh, includi questo output (potresti voler anonimizzare i nomi host e utente).
  • Se puoi, controlla il server accede /var/log/auth.log.
  • Se l'autenticazione con chiave pubblica non funziona, controllare nuovamente le autorizzazioni, in particolare il bit di gruppo (vedere sopra).


1
Bella risposta! Ho dimenticato il mio homedir: o
RobAu,

Se si esegue la versione recente di ssh (o sshd), le chiavi DSA non sono più supportate per impostazione predefinita a causa di problemi di sicurezza. L'unica vera correzione è l'aggiornamento a RSA o chiavi migliori.
Mikko Rantalainen,

Ho cambiato i permessi della mia cartella home e cosa? Sono stato bloccato fuori da SSH! Ho cambiato i tasti SSH, no, il server rifiuta ancora la connessione! Ero pazzo cercando di trovare una soluzione e con la tua risposta di chmod 700 alla mia cartella home, ssh ha iniziato a funzionare !!!!!!! Grazie! Se la mia connessione al terminale si interrompesse mentre cercavo di trovare la soluzione, sarei totalmente bloccato fuori dal server. Quindi fai attenzione a non giocare con le autorizzazioni della tua cartella home! (Ho appena cambiato i permessi della mia cartella home, non la cartella .ssh ma ancora bloccato da SSH)
Tarik,


5

Se controlli le autorizzazioni sulle directory e c'è un "." subito dopo di loro, allora potresti avere selinux abilitato, che guasterà con lo scambio di chiavi e l'impostazione predefinita sarà l'identificazione manuale della password.

È possibile disabilitare SELinux per la risoluzione dei problemi seguendo le istruzioni qui: http://www.centos.org/docs/5/html/5.1/Deployment_Guide/sec-sel-enable-disable-enforcement.html , o semplicemente modificare il / etc / selinux / config e cambiarlo da "imposizione" a "disabilitato".

Spero che sia di aiuto.


Avevo abilitato selinux, ma disabilitarlo non sembrava risolverlo. Qual è stato il trucco per me chmod 600 ~/.ssh/authorized_keys: il file era scrivibile in gruppo. (via pyrosoft.co.uk/blog/2013/01/12/… )
David Carboni

Questo mi ha aiutato! Grazie!
907

Dovresti anche essere in grado di far funzionare l'autenticazione SSH con SELinux impostando i contesti SELinux corretti. Il ripristino dei contesti configurati dal sistema nella directory home ( restorecon ~ -R) è un buon punto di partenza.
Josh Kelley,

4

Vorrei assicurarti che le tue impostazioni in / etc / ssh / sshd_config siano corrette.

Per forzare l'uso della sola PKI e per impedire le password, trova la riga

#PasswordAuthentication yes 

nel tuo file, decommentalo e impostalo su

PasswordAuthenticate no

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


11
Stai spiegando come disabilitare l'autenticazione con password. Questo non aiuta a far funzionare l'autenticazione con chiave pubblica (la chiave pubblica viene prima provata). Andrew: non disabilitare l'autenticazione con password finché non sei sicuro che l'autenticazione con chiave pubblica funzioni!
Gilles 'SO- smetti di essere malvagio' il

2

Una possibile causa del problema è che si dispone di chiavi DSA ma ora SSH (apparentemente) utilizza automaticamente le chiavi RSA. Ho riscontrato il problema durante l'aggiornamento a 16.04. Puoi vedere di più qui, ma la risposta breve è aggiungere quanto segue a ~/.ssh/config:

PubkeyAcceptedKeyTypes ssh-dss

1

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


1

A causa della necessità di risolvere i problemi di comunicazione tra due macchine diverse, ~/.sshsul lato client c'erano due chiavi private .

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

Host *
IdentityFile ~/.ssh/identity_b

Correzione ~/.ssh/identityrisolto il problema:

Host a
IdentityFile ~/.ssh/identity_a
Host b
IdentityFile ~/.ssh/identity_b

0

Ho appena avuto lo stesso problema, ma la modifica delle autorizzazioni chmodnon mi ha aiutato, poiché si è scoperto che non avevo la proprietà del ~/.ssh/authorized_keysfile. È possibile modificare la proprietà della .sshdirectory con:

sudo chown -R "$USER" ~/.ssh

-1

In qualche modo questo ha funzionato per me:

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

Cambia questa linea da sì a no 28 StrictModes no

Riprova

sysadmin @ suselinux1: ~> con sysadmin kaiser Benvenuti in Ubuntu 12.04.1 LTS (GNU / Linux 3.2.0-25-generico i686)

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


3
Fare qualcosa senza sapere cosa fa e perché funziona può essere accettabile, ma suggerire che lo stesso sia negativo e, ad essere onesti, peggio se si tratta di un sistema di sicurezza.
Mahesh,

2
concordato. lascia che questo sia un incentivo per creare sshddocumenti migliori , che non rientrano esattamente nella categoria "bella lettura del sabato"
code_monk,
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.