Il server continua a chiedere la password dopo che ho copiato la mia chiave pubblica SSH in authorized_keys


44

Ho un server Ubuntu, in esecuzione in un cloud. Ho creato un utente ( git). Nella cartella /home/git, ho creato .ssh/la authorized_keysdirectory e il file.

Ma quando inserisco la mia chiave pubblica SSH nel authorized_keysfile, il server continua a chiedermi la password.

Che cosa ho fatto di sbagliato?


Dove rendi pubblico il tuo ypur? in user git o in root? come si accede? come ssh <you> @ <server> o <git> @ <server> o root @ <server> .. verificalo e aggiungi altre informazioni.
maniat1k

Risposte:


42

Sul lato server, il demone ssh accederà agli errori /var/log/auth.log, quindi controlla quel file per vedere cosa viene segnalato.

Dal lato client, quando si stabilisce la connessione è possibile aggiungere la -vbandiera (o -vvo -vvv) per aumentare la verbosità. Potresti essere in grado di identificare il tuo problema in questo modo.

Ecco altre cose da controllare.

  • Assicurarsi che /home/git/.ssh/authorized_keyssia di proprietà di git.
  • Assicurati che /home/git/.ssh/authorized_keysabbia una modalità di 600 ( -rw-------).

Controlla anche il /etc/ssh/sshd_configfile.

  • PubkeyAuthentication dovrebbe essere impostato su yes
  • Esiste anche la AuthorizedKeysFiledirettiva che determina il percorso in cui dovrebbero trovarsi le chiavi autorizzate. Assicurati che sia commentato o predefinito %h/.ssh/authorized_keys.

Grazie! Proverò queste opzioni e tornerò più tardi al feedback!
Luis Dalmolin

Cosa fai se non vedi un /var/log/auth.logfile? C'è un modo per accenderlo?
Steve Robbins,

1
I log potrebbero essere in / var / log / secure se non si dispone di /var/log/auth.log
CoverosGene

Errore sciocco, avevo scp-ed il file .pub appena all'interno della cartella .ssh sul server a cui volevo collegarmi. Assicurati di spostarlo nella cartella authorized_keys.
CenterOrbit

Ho anche dovuto rimuovere le autorizzazioni di scrittura di gruppo dalla mia directory home stessa. Poi ho riavviato ssh consudo service ssh restart
Dylan Pierce il

19

Assicurati anche che la tua directory home dell'utente (nel tuo caso, / home / git) sia scrivibile solo da te. Ho avuto questo problema una volta perché la mia home directory era scrivibile in gruppo. /var/log/auth.log ha dichiarato: "Autenticazione rifiutata: cattiva proprietà o modalità per directory / home / chuck". (questo per assicurarsi che non utilizzi un file authorized_keys con cui qualcuno che non sia stato con te!)


Anche se questo è sicuramente utile, penso che sia più un'aggiunta alla risposta di xeyes .
gertvdijk,

1
Oh mio Dio, grazie mille !. I miei occhi bruciavano perché tutta la ricerca che ho fatto su Google. Alla fine ha funzionato !. Grazie mille.
GTRONICK,

Amico grazie! ho passato ore a cercare una soluzione ... e questo ha risolto tutti i miei problemi.
Afaria,

Sì. era quello. felice di aver deciso di leggere la prossima risposta
Katushai,

Controlla anche / etc / passwd qual è la home directory dell'utente. Il mio bizzarro problema era che non aveva uno standard
drodsou,

5

Esistono diversi modi per risolvere questo problema: è possibile configurare sshd(lato server) o ssh(lato client) per non utilizzare l'autenticazione con password. La disabilitazione dell'autenticazione con password sul server rende il server più sicuro, ma si avranno problemi se si perde la chiave.

Per rendere ssh(lato client) usando l'autenticazione pubkey, aggiungi alcune opzioni al sshcomando:

ssh -o PubkeyAuthentication=yes -o PasswordAuthentication=no -X git@server

Se funziona, è possibile impostare l' PasswordAuthentication=noopzione in modo permanente nel file di configurazione del client ssh /etc/ssh/ssh_configa livello di sistema o ~/.ssh/configspecifico dell'utente (per i dettagli, vedere man ssh_config).


1
Per impostazione predefinita, tutta la configurazione del client SSH ( /etc/ssh/ssh_config) sui sistemi Debian / Ubuntu preferisce già PubkeyAuthenticatione provala prima come vedrai quando invocherai sshin modalità dettagliata.
gertvdijk,

3

Stai usando ~ / .ssh / config sul tuo computer locale? Ho riscontrato questo problema quando utilizzo la direttiva IdentityFile nel file di configurazione e punto la chiave pubblica. Per esempio:

Host Cloud
    Hostname cloud.theclouds.com
    User git
    IdentityFile ~/.ssh/config/mykey # This is correct

    # IdentityFile ~/.ssh/config/mykey.pub # This is incorrect


1

Un'altra cosa da verificare è se ci sono ulteriori resi di trasporto nella chiave pubblica. Ho seguito il consiglio sopra per rivedere /var/log/auth.log e ho visto un errore durante la lettura della chiave. La chiave era lunga circa due righe anziché quattro. C'erano ulteriori ritorni a capo incorporati nella chiave.

Quando si utilizza l'editor vi, utilizzare shift-j per unire le linee e cancellare lo spazio aggiuntivo nella stringa di chiavi.


1
Triplo il controllo delle autorizzazioni e sshd_config. Ho sbattuto la testa contro il muro per mezz'ora. Questo è stato il mio errore! In qualche modo, ho preso l'abitudine di terminare tutti i file che modifico a mano con un'interruzione di riga aggiuntiva. Anche con una chiave e un ritorno a capo alla fine , è sufficiente incasinare l'autorizzazione.
jrhorn424,

Assicurati di avere anche ----- END RSA PRIVATE KEY ----- bit.
incontro il

1

Se si dispone di più chiavi private, utilizzare l'opzione -v sul comando di connessione ssh per verificare se le altre chiavi primarie sono state utilizzate per provare a connettersi. In caso contrario, dire al client ssh di usarli con il seguente comando:

ssh-add path/to/private/key

1

Puoi anche aggiungere la tua chiave all'agente SSH:

u@pc:~$ ssh-agent bash
u@pc:~$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/u/.ssh/id_rsa: # ENTER YOUR PASSWORD
Identity added: /home/u/.ssh/id_rsa (/home/u/.ssh/id_rsa)

0

Potrebbe anche essere che stai chiamando

sudo git clone gituser@domain:repo.git

dove la chiave ssh degli utenti root non è stata aggiunta a authorized_keysofgituser


0

Su una macchina che esegue Ubuntu 18.04.02 LTS il suggerimento di impostare le autorizzazioni su ~/.ssh600 non ha funzionato per me. Ho dovuto impostare i permessi su 700, e poi le cose hanno funzionato bene.


0

Ho avuto i permessi del mio file .ssh / directory e authorized_keys corretti ma ho riscontrato questo problema di "richiesta di password" a causa di un diverso problema autoindotto.

Avevo usato un momento saliente basato sul mouse e copia / incolla per copiare le informazioni dal mio id_rsa.pub locale nel file authorized_keys sul server. Questo ha copiato correttamente i dati come una singola riga, ma lì dove spazi indesiderati alla fine delle righe visibili erano difficili da vedere quando si modificava il file con vi. Una volta che ho rimosso questi spazi indesiderati ho potuto ssh bene.


0

Quindi quello che è successo per me è che ho 2 VM per accedere dal mio computer locale (2 chiavi id_rsa.pub e id_rsa2.pub). Mi sono reso conto che la mia connessione ssh utilizza id_rsa.pub per impostazione predefinita per qualsiasi connessione ssh user@xx.xx.xx.xx. Ho risolto il mio problema aggiungendo un file di configurazione e specificando l'identità da utilizzare per ogni host come il seguente:

vi ~/.ssh/config

Add both hostnames and their identity file as follows:

Host server1.nixcraft.com
  IdentityFile ~/Users/.ssh/id_rsa1
Host server2.nixcraft.com
  IdentityFile /backup/home/aymen/.ssh/id_rsa2
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.