La finestra di dialogo Password appare quando le autorizzazioni della chiave privata SSH sono impostate su 0600

71

Ho installato la mia chiave privata SSH in ~/.ssh/id_rsa e ho impostato le sue autorizzazioni su 0600 . Quando mi collego a un server SSH che utilizza la mia chiave privata in Terminal.app tramite ssh , viene visualizzata una finestra di dialogo che mi chiede di inserire la mia password per accedere al file id_rsa :

VedolastessafinestradidialogoquandomicollegoaunserverFTPconilclientdell'interfacciagraficadiInterarchy.

Aggiornamento:Vedoquestafinestradidialogoognivoltacheeffettuolaconnessioneindipendentementedalfattochesiapossibileselezionare"Memorizza password nel mio portachiavi". Viene visualizzato altre due volte se si fa clic sul pulsante OK indipendentemente da ciò che viene inserito nel campo della password.

Quando rilasso queste autorizzazioni a, diciamo, 0640 , non vedo più una finestra di dialogo che mi chiede la mia password, ma ssh si interrompe con il seguente errore:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0640 for '/Users/myusername/.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.
bad permissions: ignore key: /Users/myusername/.ssh/id_rsa

Trovo estremamente fastidiosa la finestra di dialogo della password e sono sicuro che ci deve essere un modo per evitare di dover chiudere questa finestra di dialogo. SSH deve accedere al file id_rsa .

Nota: eseguo Mac OS X 10.6.8.

    
posta titaniumdecoy 24.07.2011 - 07:39
fonte

19 risposte

70

Assicurati di avere un id_rsa.pub o id_dsa.pub corrispondente nella tua directory ~/.ssh .

Quando avevo un id_rsa ma non un id_rsa.pub corrispondente, Mac OS X continuava a spuntare la finestra di dialogo e ricorda che passowrd nel mio portachiavi non ha fatto nulla.

cd ~/.ssh
ssh-keygen -y -f id_rsa > id_rsa.pub

ha generato il file di chiave pubblica appropriato per me.

Se hai già il tuo file pubblico lì (rinominalo con un altro nome) e genera nuovamente la chiave pubblica usando il comando precedente, noterai che il generato e il vecchio non sono uguali. In qualche modo le versioni precedenti di Mac OS X hanno generato una chiave pubblica che a Lion non piace più, generandola di nuovo risolve il problema.

Per i curiosi, la chiave è esattamente la stessa, la parte che cambia è che non c'è più una sezione "commenti" dopo la chiave sul file.

    
risposta data 29.09.2011 - 00:41
fonte
89

Per prima cosa, esegui ssh-add -K e controlla se questo risolve il tuo problema.

In caso contrario:

  • Rimosso il file rsa_id.pub e rigenerato uno nuovo (deve essere in ~ / .ssh /):

    ssh-keygen -y -f id_rsa > id_rsa.pub
    
  • Le autorizzazioni garantite sono state impostate su 600 sia per id_rsa che id_rsa.pub (deve essere in ~ / .ssh /):

    chmod 600 id_rsa*
    
  • Ha eseguito il seguente comando:

    ssh-add -K
    

Dopo aver fatto ciò, non mi è stato più richiesto di fornire la mia password della chiave privata. Sembra che in realtà inserisca la password della chiave privata nella posizione corretta del portachiavi per l'utilizzo di OS X.

    
risposta data 21.07.2014 - 20:59
fonte
20

Nel mio caso ssh-add -K non ha fatto il trucco, ho dovuto specificare la chiave:

ssh-add ~/.ssh/id_rsa
    
risposta data 08.04.2015 - 05:37
fonte
15

Per macOS 10.12 Sierra ssh-add -K deve essere eseguito dopo ogni riavvio. Per evitare questo, crea ~/.ssh/config con questo contenuto.

Host *
   AddKeysToAgent yes
   UseKeychain yes
   IdentityFile ~/.ssh/id_rsa

Apple ha aggiunto Technote 2449 che spiega cosa è successo.

Prior to macOS Sierra, ssh would present a dialog asking for your passphrase and would offer the option to store it into the keychain. This UI was deprecated some time ago and has been removed.

Modifica: apparentemente non è necessario specificare un host e una chiave. Basta aggiungere questo è sufficiente.

AddKeysToAgent yes
UseKeychain yes
    
risposta data 15.12.2016 - 14:17
fonte
12

Devi inserire la passphrase per la chiave privata da qualche parte, e OS X usa ssh-agent per impostazione predefinita.

Se vuoi usare ssh-agent ma vuoi evitare la finestra di dialogo gui, puoi usare ssh-add per aggiungere la passphrase all'agente e quindi ssh come al solito.

Se non vuoi usare ssh-agent e invece hai il prompt ssh per la passphrase, allora annulla la variabile di ambiente SSH_AUTH_SOCK.

    
risposta data 08.08.2011 - 23:40
fonte
8

Quando rilassi le autorizzazioni, la chiave viene ignorata. Non otterrai nulla in questo modo.

Se vuoi utilizzare una chiave senza dover inserire una password ogni volta, hai due opzioni.

Se si seleziona "Ricorda la password nel mio portachiavi", non dovrai digitare la password ogni volta: verrà memorizzata nel portachiavi con tutte le altre password. Questa è l'opzione consigliata.

È possibile creare un file di chiave privata senza password. È possibile modificare il file della chiave privata esistente in modo che non sia protetto da password (la modifica della password influisce solo sul file della chiave, non sulla chiave stessa). Dalla riga di comando, esegui ssh -p , inserisci la passphrase esistente e lascia vuota la nuova passphrase. C'è un rischio per la sicurezza di avere una passphrase vuota: chiunque possa accedere al tuo file di chiavi private (ad esempio accedendo ai tuoi backup) può usarlo istantaneamente.

    
risposta data 24.07.2011 - 15:06
fonte
5

se hai aggiunto la tua chiave privata alla directory ~ / .ssh di origine, e hai inserito ssh-add -K per aggiungerlo al portachiavi, e hai il tuo contenuto della chiave pubblica copiato in .ssh / authorized_keys ( per l'account corretto) sul server di destinazione la finestra di dialogo scompare.

è una combinazione complessa di file, permessi, posizioni e comandi, quindi può richiedere del tempo. non vorrei correre a una conclusione sui bug.

    
risposta data 08.12.2011 - 02:41
fonte
3

Ho esattamente lo stesso problema su Lion (Mac OS X 10.7). Penso che sia un bug ... Se l'autenticazione ssh è password, il client passa prima la chiave pubblica, che è normale. Tuttavia, anche se si sceglie di salvare la passphrase sul portachiavi (che non è richiesta per l'autenticazione della password) la prossima volta che viene stabilita una nuova connessione ssh, viene richiesta nuovamente la passphrase ...

    
risposta data 02.08.2011 - 23:19
fonte
3

Non ci dovrebbe essere bisogno di rigenerare le tue chiavi pubbliche. Puoi semplicemente fare questi due comandi:

chmod 0600 ~/.ssh/id_rsa.pub
ssh-add ~/.ssh/id_rsa

Fondamentalmente, è necessario stringere le autorizzazioni sul file della chiave pubblica ed è necessario aggiungere la chiave all'agente di autenticazione OSX.

    
risposta data 05.12.2016 - 17:03
fonte
3

Nell'ultima versione di macOS (10.12.2 - Sierra) questa è una soluzione semplice. Modifica il tuo ~ / .ssh / config e attiva l'opzione UseKeychain:

Host *
UseKeychain yes

Salva e risolto.

    
risposta data 10.01.2017 - 01:16
fonte
2

Questo problema si è verificato sul mio sistema OS X 10.7.4 quando ssh-agent è morto. Un riavvio ha risolto il problema. (Si potrebbe provare a riavviare ssh-agent, ma non so se il portachiavi sia abbastanza intelligente da raccogliere il nuovo socket ssh-agent.)

    
risposta data 13.09.2012 - 03:42
fonte
2
  1. Assicurati che ~ / .ssh / sia chmod 700.

  2. Assicurati che i file ~ / .ssh / id * siano entrambi chmod 600.

  3. Esegui / Applicazioni / Utility / Portachiavi Access.app e ripara il portachiavi.

  4. Logout. (Il riavvio non sarebbe una pessima idea)

  5. Accedi

  6. Se il problema persiste, sposta i tuoi file ~ / .ssh / id * esistenti sul desktop e prova a generare nuove chiavi usando ssh-keygen -t dsa -f ~/.ssh/id_dsa -C [email protected] e verifica se le nuove chiavi funzionano meglio.

Sono su Lion, ma IIRC Snow Leopard ha funzionato allo stesso modo.

ps - chiunque suggerisca di usare una passphrase ssh vuota dovrebbe essere obbligato a indossare un cartello in modo che altre persone sappiano di non prenderne consiglio.

    
risposta data 08.12.2011 - 08:36
fonte
1

Rigenerare la chiave pubblica non sembra funzionare per me (10.8), né generare una nuova chiave SSH. Se, ad esempio, eseguo git pull dopo aver bloccato il portachiavi di accesso, viene visualizzata una finestra di dialogo per richiedere la password alla chiave invece di tentare prima di recuperare la password dal portachiavi di accesso.

Tuttavia, se prima uccido ssh-agent, viene richiesta la password del portachiavi di accesso che recupera la password della chiave SSH.

    
risposta data 11.08.2013 - 22:49
fonte
1

Un altro risultato interessante è se copi e ampli; incollare il contenuto del file PEM, si potrebbe avere il finale mancante del trattino. Quindi ricorda di aggiungere la linea finale come,

-----END RSA PRIVATE KEY-----
    
risposta data 14.04.2016 - 08:02
fonte
1

Ho dovuto eseguire i seguenti passaggi per farlo funzionare.

# Change working directory
cd ~/.ssh
# Remove the old public key
rm id_rsa.pub
# Create a new public key
ssh-keygen -y -f id_rsa > id_rsa.pub
# Change permission
chmod 600 id_rsa*
# Add the key to ssh
ssh-add id_rsa
# Then finally test it (I used github)
ssh -i id_rsa.pub [email protected]

Il comando finale dovrebbe quindi produrre qualcosa come: Hi <user>! You've successfully authenticated, but GitHub does not provide shell access.

    
risposta data 24.05.2016 - 10:49
fonte
0

Ho avuto lo stesso problema. Mi sembra di averlo risolto facendo questo.

1) Eseguito il backup rinominando in vecchi i file id_dsa e id_dsa.pub.

2) Ha eseguito un nuovo keygen con una passphrase vuota.

Funziona con il processo di periodo launchctl che monitora un server remoto e accede da ssh in un terminale.

Ho una funzione di authme funzione rapida nel mio terminale poiché ho il seguente nel mio .bash_profile

#~/.bash_profile    
function authme {
ssh $1 'cat >>.ssh/authorized_keys' <~/.ssh/id_dsa.pub
}

Quindi una rapida autorizzazione remoteserver.com copierà la nuova chiave remota.

Penso che il bug abbia a che fare con la passphrase che non viene convertita (il mio vecchio Snow Leopard non ne aveva affatto uno).

Provalo e vedi se è d'aiuto.

Non ci sono voluti più di 10 minuti. Ho passato googlando per sempre per vedere se c'erano altre menzioni di questo. Questo sito era l'unico!

Owain.

    
risposta data 08.08.2011 - 21:06
fonte
0

Ho avuto un problema simile. Si è scoperto che la chiave privata che stavo usando era in un formato sbagliato. Ho usato PuTTY Key Generator sulla mia macchina Win e ssh su OS X si aspetta un formato diverso - Apri il formato SSH.

Si è scoperto che lo strumento che ho usato per generare questa chiave (PuTTY Key Generator) aveva un'opzione per convertire la mia chiave privata nel formato richiesto da Open SSH.

Semplice come:

  1. Apri PuTTY Key Gen
  2. Carica la tua chiave privata
  3. Seleziona Convertsions > Esportare la chiave OpenSSH.

Il file che salvi contiene la tua chiave privata originale nel formato appropriato (OpenSSH).

    
risposta data 09.05.2016 - 22:24
fonte
0

Assicurati che:

  1. Stai utilizzando il formato PEM per la tua chiave privata. Questo perché Mac usa il client openssh che funziona con pem. ppk è il formato proprietario di mastice e non è compatibile con openssh. Puoi facilmente convertire ppk in pem usando putty keygen, nel caso in cui tu abbia solo ppk.
  2. Le autorizzazioni per il tuo file pem sono 600. Le chiavi private sono pensate solo per essere accessibili solo dal loro proprietario. Pertanto, se le autorizzazioni consentono l'accesso in lettura a qualcun altro, verrà considerata una minaccia per la sicurezza.

Questo dovrebbe risolvere il problema, si spera.

    
risposta data 19.04.2017 - 15:02
fonte
-1

Utilizza la chiave .pem anziché la chiave .ppk.

    
risposta data 14.07.2015 - 23:51
fonte

Leggi altre domande sui tag