Chiave SSH: "Le autorizzazioni 0644 per" id_rsa.pub "sono troppo aperte." su mac


261

Genero una coppia di chiavi ssh sul mio mac e aggiungo la chiave pubblica al mio server Ubuntu (in realtà, è una macchina virtuale sul mio mac), ma quando provo ad accedere al server Ubuntu, dice:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/tudouya/.ssh/vm/vm_id_rsa.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
Permission denied (publickey,password).

Ho provato molti modi per risolvere questo problema, cambiare la modalità file chiave, cambiare la modalità cartella, come alcune risposte su StackOverflow, ma non funziona.
l'autorizzazione del file chiave:

vm dir:
drwxr-xr-x   4 tudouya  staff    136  4 29 10:37 vm

key file:
-rw-------  1 tudouya  staff  1679  4 29 10:30 vm_id_rsa
-rw-r--r--  1 tudouya  staff   391  4 29 10:30 vm_id_rsa.pub

per favore dammi qualche idea ... =========================================

I scrivi le informazioni sull'host su ssh_config:

Host ubuntuvm
    Hostname 10.211.55.17
    PreferredAuthentications publickey
    IdentityFile /Users/tudouya/.ssh/vm/vm_id_rsa.pub

Corro il comando "ssh -v ubuntuvm", visualizza:

ssh -v ubuntuvm
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 103: Applying options for *
debug1: /etc/ssh_config line 175: Applying options for ubuntuvm
debug1: Connecting to 10.211.55.17 [10.211.55.17] port 22.
debug1: Connection established.
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub type 1
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-8
debug1: match: OpenSSH_6.6.1p1 Ubuntu-8 pat OpenSSH*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5-etm@openssh.com none
debug1: kex: client->server aes128-ctr hmac-md5-etm@openssh.com none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 55:6d:4f:0f:23:51:ac:8e:70:01:ec:0e:62:9e:1c:10
debug1: Host '10.211.55.17' is known and matches the RSA host key.
debug1: Found key in /Users/tudouya/.ssh/known_hosts:54
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
debug1: Server accepts key: pkalg ssh-rsa blen 279
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/tudouya/.ssh/vm/vm_id_rsa.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
debug1: No more authentication methods to try.
Permission denied (publickey,password).

1
Potresti modificare la tua domanda per includere il comando ssh specifico che stai eseguendo? Se il file chiave in questione è specificato nel file di configurazione di ssh, includere anche le righe pertinenti dal file di configurazione.
Kenster,

Per me erano "cattive autorizzazioni"
insegna

Devo affrontare questo problema quando si aggiunge -i id_rsa.pubal comando ssh utilizzare per la connessione. Sembra che imporre di usare una chiave pubblica sulla forza di comando ssh per chiedere la password (anche quando la passphrase era vuota, almeno nel mio caso)
Diego Andrés Díaz Espinoza

Risposte:


148
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub type 1

Sembra che tu stia tentando di utilizzare il file chiave errato. Il file con l'estensione ".pub" è il file della chiave pubblica . Il file corrispondente senza l'estensione ".pub" è il file della chiave privata . Quando si esegue un client SSH per connettersi a un server remoto, è necessario fornire il file della chiave privata al client SSH.

Probabilmente hai una linea nel tuo .ssh/configfile (o /etc/ssh_config) che assomiglia a questo:

IdentityFile .../.ssh/vm/vm_id_rsa.pub

Devi rimuovere l'estensione ".pub" dal nome file:

IdentityFile .../.ssh/vm/vm_id_rsa

Stavo avendo questo problema con SQLPro e avevo selezionato in modo errato il .pubfile public ( ) invece del file privato.
Henry,

1
Ho avuto questo errore quando l'ho fatto ssh -i id_ed25519.pubmentre facevo dei ssh -i id_ed25519lavori
Boris il

2
Grazie, mi hai salvato qui.
Abner,

Brillante! Grazie!
Alliswell,

576

Ti suggerisco di fare:

chmod 400 ~ / .ssh / id_rsa

Per me il lavoro va bene.


33
“Permissions 0644 for 'id_rsa.pub' are too open."e la chiave è stata quindi ignorata. Ciò è probabilmente dovuto al fatto che ho copiato il file delle chiavi dal mio altro PC. Ma la correzione delle autorizzazioni ha risolto il problema. grazie!
Parassita,

2
@ xoxn - 1'w3k4n Perché è così male? Ha senso se le persone copiate o altrimenti gestite male l'accesso in lettura / scrittura a questi file sensibili, che dovrebbero essere riparati.
Gerard,

5
Questo non è un nastro isolante. Se hai copiato i tuoi ID, questo ha senso.
ALisboa,

Ha funzionato per me come soluzione durante la copia di chiavi SSH dal vecchio computer!
Nick,

1
Funziona anche su WSL
h-rai,

59

La chiave deve essere leggibile dall'utente che ha effettuato l'accesso.

Prova questo:

chmod 400 ~/.ssh/Key file
chmod 400 ~/.ssh/vm_id_rsa.pub

Con la chiave pubblica 400 o 600 ottengo un formato non valido facendossh-add ~/.ssh/id_rsa.pub
UR e


23

Dopo aver eseguito il comando di seguito funziona per me

sudo chmod 600 /path/to/my/key.pem

20

Nel mio caso, era un file .pem. Risulta valido anche per quello. Autorizzazioni modificate per il file e ha funzionato.

chmod 400 ~/.ssh/dev-shared.pem

Grazie per tutti coloro che hanno aiutato sopra.


13

Se le chiavi si trovano nella directory ~ / .ssh, utilizzare

chmod 400 ~ / .ssh / id_rsa

Se le chiavi si trovano in directory diverse, utilizzare

chmod 400 directory_path / id_rsa

Questo ha funzionato per me.


2
In che modo questo migliora le altre risposte?
Nico Haase,

2
non è la chiave del pub che deve essere protetta, è quella privata
Picarus

La chiave privata deve essere protetta.
bashan,

Per me funziona. Penso che chmod 400 ~/.ssh/id_rsaquesto sia ciò che volevi dire @Anirban. Come indicato sopra: il file con l'estensione ".pub" è il file della chiave pubblica. Il file corrispondente senza l'estensione ".pub" è il file della chiave privata. Dobbiamo proteggere quello privato.
naveenKumar

Modificata la risposta. Dovrebbe essere la chiave privata.
Anirban,

12

Ci sono molte risposte simili ma nessuna spiegazione ...

L'errore viene generato perché le autorizzazioni del file della chiave privata sono troppo aperte. È un rischio per la sicurezza.

Modificare le autorizzazioni sul file della chiave privata in modo che sia minimo (di sola lettura dal proprietario)

  1. Cambiare proprietario chown <unix-name> <private-key-file>
  2. Imposta autorizzazioni minime (sola lettura per il proprietario del file) chmod 400 <private-key-file>

7

Per quanto mi riguarda, la modalità predefinita di id_rsaè 600, che significa readablee writable.

Dopo aver inviato questo file a un repository git e averlo estratto da un altro PC, a volte la modalità del file della chiave privata diventa -rw-r--r--.

Quando estraggo il repository con ssh dopo aver specificato il file della chiave privata, non è riuscito e ha richiesto gli stessi avvisi. Di seguito è la mia sceneggiatura.

ssh-agent bash -c "ssh-add $PATH_OF_RSA/id_rsa; \
git pull git@gitee.com:someone/somerepo.git "

Risolvo questo problema semplicemente cambiando la modalità in 600.

chmod 600 $PATH_TO_RSA/id_rsa

6

dare il permesso 400 rende la chiave privata e non accessibile a qualcuno sconosciuto. Rende la chiave protetta.

chmod 400 /Users/tudouya/.ssh/vm/vm_id_rsa.pub


2

chmod 400 /etc/ssh/* per me va bene.


3
Puoi farlo fintanto che ti rendi conto che stai influenzando tutte le chiavi nella directory.
J2N,

2

Se stai usando un file .ssh / config, prova a

chmod 0400 .ssh/config

poi:

chmod 0400 .ssh/<<KEYFILE_PATH>>

2

Coloro che hanno suggerito chmod 400 id_rsa.pub non suonavano affatto bene. Era del tutto possibile che op usasse la chiave pub invece della chiave privata per ssh.

Quindi potrebbe essere semplice come ssh -i /Users/tudouya/.ssh/vm/vm_id_rsa (the private key) user@hostripararlo.

--- aggiornare ---

Consulta questo articolo https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2 per come impostare il tasto ssh


Potrebbe essere, anche se nel mio caso quando ho cercato questo problema e sono arrivato alla risposta, il chmod 400 era ciò di cui avevo bisogno per risolvere il mio problema. Grazie a tutti coloro che hanno aiutato!
J2N,

1

Corri sotto al tuo pem

sudo chmod 600 /path/to/my/key.pem 

-8

Ho rimosso il .pub file, e ha funzionato.


1
La rimozione del file .pub non è necessaria. Significa anche che non hai un record della chiave pubblica sul tuo computer per un uso successivo.
Henry,

1
Se si dispone di OpenSSH, è possibile rigenerare il file della chiave pubblica mancante dalla chiave privata utilizzando ssh-keygen -i -f /path/to/private.key > /desired/path/to/public.key. Quindi, non è davvero perso. :)
dannysauer,
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.