ssh errore "autorizzazioni troppo aperte"


2056

Ho avuto un problema con il mio mac in cui non riuscivo più a salvare alcun tipo di file sul disco. Ho dovuto riavviare OSX Lion e ripristinare le autorizzazioni su file e acls.

Ma ora quando voglio eseguire il commit di un repository ottengo il seguente errore da ssh:

Permissions 0777 for '/Users/username/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

Quali livelli di autorizzazioni dovrei dare al file id_rsa?


21
Grazie per aver chiesto al quesiton. Un'esperienza migliore sarebbe per chi ha scritto questo messaggio di errore di suggerire alcune configurazioni valide (come 600 o 400 come suggerito di seguito). I programmatori che non scrivono messaggi di errore sufficientemente completi e utili ci torturano da anni!
George Pligoropoulos,

FWIW, questo è legato StrictModesall'abilitazione sul sshdserver, dalla pagina man : "StrictModes Specifica se sshd (8) dovrebbe controllare le modalità dei file e la proprietà dei file dell'utente e della home directory prima di accettare il login." - potresti disabilitarlo comunque non suggerito.
masseyb,

Risposte:


3475

Le chiavi devono essere leggibili solo da te:

chmod 400 ~/.ssh/id_rsa

Se le chiavi devono essere leggibili da te:

chmod 600 ~/.ssh/id_rsa

Anche 600 sembra andare bene (in effetti meglio nella maggior parte dei casi, perché non è necessario modificare le autorizzazioni dei file in un secondo momento per modificarlo).

La parte pertinente dalla manpage ( man ssh)

 ~/.ssh/id_rsa
         Contains the private key for authentication.  These files contain sensitive 
         data and should be readable by the user but not
         accessible by others (read/write/execute).  ssh will simply ignore a private 
         key file if it is              
         accessible by others.  It is possible to specify a
         passphrase when generating the key which will be used to encrypt the sensitive 
         part of this file using 3DES.

 ~/.ssh/identity.pub
 ~/.ssh/id_dsa.pub
 ~/.ssh/id_ecdsa.pub
 ~/.ssh/id_rsa.pub
         Contains the public key for authentication.  These files are not sensitive and 
         can (but need not) be readable by anyone.

300
400 è troppo basso in quanto ciò lo rende non scrivibile dal tuo stesso utente. 600 è effettivamente raccomandato in quanto consente al proprietario di leggere e scrivere non solo di leggere.
jfreak53,

8
Ho scoperto oggi che ci sono momenti in cui 400 è rilevante. Supponiamo di avere un file autorizzato_keys con le caratteristiche no-pty et al impostate. Se il file è scrivibile, l'utente può effettivamente sovrascrivere il file authorized_keys e ottenere l'accesso interattivo alla shell! Qualcosa da tenere a mente, anche se sicuramente non è il caso generale per la maggior parte delle persone.
cambio rapido

17
AWS in realtà consiglia l'autorizzazione 400 sul proprio sito Web. Questo è quello che ho fatto su OS X e ha funzionato.
George Mylonas,

5
Questo sicuramente funziona ed è più sicuro. L'unico aspetto negativo è che devi modificarlo in 600 per modificarlo. Per id_rsa e id_rsa.pub dubito che sia importante perché raramente modificherai mai quei file, ma per le chiavi autorizzate, potrebbe essere fastidioso. Meglio capire i compromessi e configurare ogni sistema in modo appropriato.
cambio rapido il

3
Suppongo che dipenda anche dalla frequenza con cui li stai modificando. Molte persone lo impostano e lo dimenticano, quindi 400 sarebbero più sicuri dagli altri e dalle tue azioni; modificando a 600 quando necessario. Se fa parte del tuo flusso di lavoro e del tuo ssh-savy, allora forse sarebbe più un ostacolo continuare a cambiare i permessi.
vol7ron,

99

Utilizzando Cygwin in Windows 8.1, è necessario eseguire un comando:

chgrp Users ~ / .ssh / id_rsa

Quindi la soluzione pubblicata qui può essere applicata, 400 o 600 è OK.

chmod 600 ~ / .ssh / id_rsa

Rif: http://vineetgupta.com/blog/cygwin-permissions-bug-on-windows-8


8
locale-dipendente. Ho dovuto eseguire "chgrp Użytkownicy ~ / .ssh / id_rsa" poiché "Users" non ha commesso errori in questo gruppo.
Marcos,

Ho dovuto fare anche questo. La mia directory cygwin era nella posizione predefinita ( C:\cygwin64) quindi probabilmente ereditava le autorizzazioni. Strano che ciò non sia accaduto su altri laptop di mia proprietà.
Zach Thacker,

3
@Marcos Ho aggiunto una risposta che funziona indipendentemente locale: stackoverflow.com/a/28647713/67013
thehouse

4
Windows 10. Utilizzato solo il secondo comando. Ha funzionato come un fascino.
StalkAlex

Si noti che per le installazioni in lingue alternative il gruppo "Utenti" ha identificatori alternativi.
John Rumpel,

43

La soluzione indipendente dalla locale che funziona su Windows 8.1 è:

chgrp 545 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa

GID 545 è un ID speciale che fa sempre riferimento al gruppo "Utenti", anche se le impostazioni internazionali utilizzano una parola diversa per Utenti.



24

AFAIK i valori sono:

700 per la directory nascosta ".ssh" in cui si trova il file chiave

600 per il file di chiavi "id_rsa"


19

Ho l'errore in Windows 10, quindi ho impostato l'autorizzazione come segue e funziona.

Autorizzazione per id_rsa di Windows 10

In dettaglio, rimuovere altri utenti / gruppi fino a quando non ha solo "SISTEMA" e "Amministratori". Quindi aggiungi il tuo accesso a Windows con l'autorizzazione di sola lettura.

Si noti che il id_rsafile si trova nella c:\users\<username>cartella.


Ho lo stesso problema su Win-10. Sulla base della tua spiegazione, non chiarire cosa hai effettivamente permesso e negato: ho "utenti" e "utenti autenticati" e non "utente specifico" come opzioni + Sistema e amministratori. Inoltre non sono riuscito a capire cygwin - da installare o utilizzare. (?)
Sam-T

2
per Win10 è necessario spostare la chiave a casa dell'utente - ha funzionato perfettamente. Stavo provando a dare il percorso completo alla chiave e a fare confusione con le autorizzazioni - niente ha funzionato.
Sam-T,

@ Sam-T se non riesci a vedere il tuo nome nell'elenco, puoi aggiungere premendo, Edit...quindi premere, Add...quindi digitare il tuo nome nella casella di testo "Enter the object names to select"quindi premere il Check Namespulsante (e premere OKe un altro OK), quindi il tuo nome dovrebbe essere elencato nella Securityscheda
Supawat Pusavanno

Probabilmente posso aggiungere il nome specificamente - secondo le tue istruzioni. Ma la mia domanda principale era: quali esatte autorizzazioni negare e consentire a tutti . Nel frattempo, come detto, sono stato in grado di risolvere il problema semplicemente aggiungendo .pemilmyuser directory
Sam-T il

16

Esiste un'eccezione al requisito di autorizzazioni "0x00" su una chiave. Se la chiave è di proprietà di root e di gruppo di un gruppo con utenti in essa contenuti, può essere "0440" e qualsiasi utente in quel gruppo può utilizzare la chiave.

Credo che funzionerà con tutte le autorizzazioni nel set "0xx0" ma non ho testato tutte le combinazioni con ogni versione. Ho provato 0660 con 5.3p1-84 su CentOS 6, e il gruppo non è il gruppo principale dell'utente ma un gruppo secondario, e funziona benissimo.

In genere ciò non viene fatto per la chiave personale di qualcuno, ma per una chiave utilizzata per l'automazione, in una situazione in cui non si desidera che l'applicazione sia in grado di interferire con la chiave.

Regole simili si applicano alle restrizioni della directory .ssh.


15

fornire 400 autorizzazioni, eseguire sotto il comando

chmod 400 /Users/username/.ssh/id_rsa

inserisci qui la descrizione dell'immagine


grande! Questo ha risolto il problema per me. Grazie!
Emanuela Colta,

11

Su Windows 10, chmod e chgrp di cygwin non erano abbastanza per me. Ho dovuto fare clic con il pulsante destro del mouse sul file -> Proprietà -> Sicurezza (scheda) e rimuovere tutti gli utenti e gruppi ad eccezione del mio utente attivo.


Questa è l'unica soluzione che funziona :) Grazie mi hai risparmiato tempo
Atul

Ho scoperto che, dopo aver fatto ciò, avrei potuto fare anche ssh dal normale prompt dei comandi di Windows. Non è necessario utilizzare Cygwin. Grande!
Atul,

8

Questo è ciò che ha funzionato per me (su Mac)

sudo chmod 600 path_to_your_key.pem 

poi :

ssh -i path_to_your_key user@server_ip

Spero che sia d'aiuto



4

Ho avuto lo stesso problema dopo la migrazione da un altro mac. E si è bloccato per connettere github con la mia chiave.

Ho ripristinato i permessi come di seguito e ora funziona bene.

chmod 700 ~/.ssh     # (drwx------)
cd ~/.ssh            
chmod 644 *.pub      # (-rw-r--r--)
chmod 600 id_rsa     # (-rw-------)

4

Windows 10 ssh in Ubuntu EC2 errore "autorizzazioni troppo aperte" su AWS

Ho avuto questo problema cercando di ssh in un'istanza di Ubuntu EC2 usando il file .pem di AWS.

In Windows ha funzionato quando ho inserito questa chiave in una cartella creata nella cartella .ssh

C:\Users\USERNAME\.ssh\private_key

Per modificare le impostazioni delle autorizzazioni in Windows 10:

Impostazioni file> Sicurezza> Avanzate

Disabilita l'eredità

Converti le autorizzazioni ereditate in autorizzazioni esplicite

Rimuovere tutte le voci di autorizzazione tranne gli amministratori

Potrebbe quindi connettersi in modo sicuro.


4

Per me (utilizzando il sottosistema Ubuntu per Windows) il messaggio di errore è cambiato in:

 Permissions 0555 for 'key.pem' are too open

dopo aver usato chmod 400. Si scopre che il motivo era l'utilizzo di root come utente predefinito.

Cambia questo usando il cmd:

 ubuntu config --default-user your_username

3

Messaggio interessante qui. I sistemi operativi sono abbastanza intelligenti da negare le connessioni remote se la tua chiave privata è troppo aperta. Comprende il rischio in cui le autorizzazioni per id_rsa sono spalancate (leggi, è modificabile da chiunque).

{Uno può cambiare prima il tuo lucchetto e poi aprirlo con le chiavi che ha già}

cd ~/.ssh
chmod 400 id_rsa

Mentre lavoriamo su più server (non di produzione), molti di noi sentono la necessità di connettere il server remoto con ssh. Una buona idea è quella di avere un pezzo di codice a livello di applicazione (potrebbe essere java usando jsch) per creare trust ssh tra i server. In questo modo la connessione sarà senza password. In caso, perl è installato - si può usare anche il modulo net ssh.


1

Mi sono imbattuto in questo errore mentre giocavo con Ansible. Ho modificato le autorizzazioni della chiave privata su 600 per risolvere questo problema. E ha funzionato!

chmod 600 .vagrant/machines/default/virtualbox/private_key

1

Ho provato 600 livelli di autorizzazione per la mia chiave privata e ha funzionato per me. chmod 600 privateKey [dev] $ ssh -i utente privateKey @ ip ha funzionato

chmod 755 privateKey [dev] $ ssh -i utente PrivateKey @ ip che stava dando il problema seguente: le autorizzazioni 0755 per 'privateKey' sono troppo aperte. È necessario che i file della chiave privata NON siano accessibili ad altri. Questa chiave privata verrà ignorata. Chiave di caricamento "privateKey": permessi errati


0
I have got the similar issue when i was trying to login to remote ftp server using public keys..        
To solve this issue initially i have done the following process
    Per prima cosa trova la posizione delle chiavi pubbliche perché quando provi ad accedere a ftp usando questa chiave pubblica. per prima cosa dobbiamo creare una chiave e impostiamo le autorizzazioni di tale chiave su 600.
            Assicurati di essere nella posizione corretta.
            passo 1:
            vai nella posizione corretta
            passo 2:
            Dopo che sei nel posto giusto
 comando: 
     chmod 600 id_rsa

        This has solved my issue.


-2

per Win10 è necessario spostare la chiave nella home directory dell'utente per un sistema operativo simile a Linux, è necessario chmod su 700 like o 600 ecc.


per Win10 è necessario spostare la chiave a casa dell'utente - ha funzionato perfettamente. Stavo provando a dare il percorso completo alla chiave e a fare confusione con le autorizzazioni - non ha funzionato.
Sam-T,
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.