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


71

Ho installato la mia chiave privata SSH ~/.ssh/id_rsae impostato le 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 id_rsafile:

inserisci qui la descrizione dell'immagine

Vedo la stessa finestra di dialogo quando mi collego a un server FTP con il client GUI di Interarchy.

Aggiornamento: vedo questa finestra di dialogo ogni volta che mi connetto indipendentemente dal fatto che spunta "Ricorda la password nel mio portachiavi". Appare altre due volte se si fa clic sul pulsante OK indipendentemente da ciò che viene inserito nel campo della password.

Quando rilasso queste autorizzazioni, per esempio, 0640non vedo più una finestra di dialogo che mi chiede la mia password ma si sshinterrompe con il seguente errore:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
@ ATTENZIONE: FILE CHIAVE PRIVATO NON PROTETTO! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
Le autorizzazioni 0640 per '/Users/myusername/.ssh/id_rsa' sono troppo aperte.
Si consiglia che i file della chiave privata NON siano accessibili ad altri.
Questa chiave privata verrà ignorata.
permessi errati: ignora chiave: /Users/myusername/.ssh/id_rsa

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

Nota: sto eseguendo Mac OS X 10.6.8.

Risposte:


70

Assicurati di avere un corrispondente id_rsa.pubo id_dsa.pubnella tua ~/.sshdirectory.

Quando ho avuto un id_rsama non un corrispondente id_rsa.pub, Mac OS X ha continuato a far apparire la finestra di dialogo e ricordo che passowrd nel mio portachiavi non ha fatto nulla.

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

ha generato il file della chiave pubblica appropriato per me.

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

Per i curiosi, la chiave è esattamente la stessa, la parte che cambia è che non ci sono più sezioni "commenti" dopo la chiave sul file.


2
Questa soluzione potrebbe non avere molto senso a prima vista, ma provaci. Stavo avendo esattamente lo stesso problema e l'ho risolto. Ho sempre utilizzare una password per le chiavi SSH e anche voi dovreste.
Alex Recarey,

3
Questa soluzione ha funzionato per me. Non ha senso ma funziona! (OS X Lion)
bruno077

2
Wow, non ha alcun senso, ma ha sicuramente corretto molti comportamenti strani sul mio sistema. Grazie.
Warren Pena,

2
Per la mia vita, non sono stato in grado di trovare una soluzione per giorni con lo stesso problema e questo ha risolto il problema per me. Questo non ha affatto senso ma ha risolto il mio problema! Grazie, votato.
Danny Englander,

OMG grazie! Ha funzionato per me (leone di montagna e usando SourceTree) quei dialoghi erano così fastidiosi.
Sebastian Sastre,

91

Innanzitutto, esegui ssh-add -Ke controlla se questo risolve il tuo problema.

Altrimenti:

  • 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 per id_rsa.pub (deve essere in ~ / .ssh /):

    chmod 600 id_rsa*
  • Ho eseguito il seguente comando:

    ssh-add -K

Dopo aver fatto ciò, non mi è stato più richiesto di fornire la password della mia chiave privata. Questo sembra effettivamente mettere la password della chiave privata nella posizione corretta del portachiavi che OS X può usare.


7
Stavo andando pazzo finché non ho incontrato il comando "ssh-add -K". Non credo quanto OSX sia complicato. +1000
eduncan911,

4
prima ho dovuto chmod 600(invece di 644) perché funzionasse
kangax il

1
La chiave privata con 644 non è bueno
xtian il

15
ssh-add -Krisolto il mio problema
Spechal,

2
Non effettua l'upgrade fino a quando Chmod 644 non viene corretto in Chmod 600, questo non è sicuro.
Tomáš Kafka,

20

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

ssh-add ~/.ssh/id_rsa

non c'è -Kpiù opzione. La tua soluzione l'ha risolto. Mi chiedo perché avrei dovuto farlo. Non ho mai ricevuto richieste di password.
DannyRe

Grazie! Questo è quando OS X Sierra ha finalmente chiesto la mia password id_rsa.
Tomáš Kafka,

2
FWIW, la -Kbandiera ha funzionato per me su Sierra 10.12.2
Chris Wagner il

Sì. Posso confermare. -K esiste e risolve il problema nell'ultima Sierra! Ottimo lavoro @nathancahill.
Matt Komarnicki,

17

Per macOS 10.12 Sierra ssh-add -Kdeve essere eseguito dopo ogni riavvio. Per evitare questo, creare ~/.ssh/configcon questo contenuto.

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

Apple ha aggiunto Technote 2449 che spiega cosa è successo.

Prima di macOS Sierra, ssh presentava una finestra di dialogo che chiedeva la passphrase e offriva l'opzione di memorizzarla nel portachiavi. Questa UI è stata deprecata qualche tempo fa ed è stata rimossa.

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

AddKeysToAgent yes
UseKeychain yes

Questo è ciò che ha funzionato per me. Inizialmente ho provato ssh-add -K, ma la modifica avrebbe funzionato solo fino al riavvio.
Gandalf458,

Ho dovuto mettere AddKeysToAgental massimo livello di ~/.ssh/config.
Radon Rosborough,

12

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

Se si desidera utilizzare ssh-agent ma si desidera evitare la finestra di dialogo della GUI, è possibile utilizzare ssh-add per aggiungere la passphrase all'agente e quindi ssh come al solito.

Se non si desidera utilizzare ssh-agent e invece si ha il prompt ssh per la passphrase, quindi disattivare la variabile di ambiente SSH_AUTH_SOCK.


Grazie Alrescha. Sai se esiste un modo per memorizzare la password della chiave privata nel portachiavi di Mac OS X in modo permanente (non solo per una singola sessione)?
titaniumdecoy

3
Puoi provare 'ssh-add -K' in Terminale, ma se c'è un bug in cui il controllo della casella non funziona, potrebbe non funzionare neanche questo. Non voglio che le mie passphrase ssh siano archiviate nel portachiavi, quindi non l'ho provato.
zzz,

Con ssh-add -Knon devo inserire la mia password per connettermi ma il prompt appare ancora; Lo licenzio e basta.
titaniumdecoy

3
ssh-add -K è ciò che usi per aggiungere la tua password al portachiavi. Se non inserisci la password, non può essere inserita nel portachiavi.
zzz,

1
addendum: sia in Lion che in Snow Leopard, se inserisco ssh-add -K, ricevo un prompt in Terminal, non una finestra di dialogo.
zzz,

8

Quando si rilassano le autorizzazioni, la chiave viene ignorata. Non otterrai nulla facendo questo.

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

Se controlli "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 chiave, non sulla chiave stessa). Dalla riga di comando, eseguire ssh -p, immettere la passphrase esistente, quindi lasciare vuota la nuova passphrase. Esiste un rischio per la sicurezza nell'avere una passphrase vuota: chiunque può accedere al file della chiave privata (ad esempio accedendo ai backup) può utilizzarlo immediatamente.


Grazie per la risposta, anche se una cosa che ho dimenticato di menzionare: il controllo dell'opzione "Ricorda la password nel mio portachiavi" non ha alcun effetto: la finestra di dialogo riappare alla successiva connessione. (L'uso di una passphrase vuota non è un'opzione per me.)
titaniumdecoy

3
Suggerire di sostituire una chiave protetta da password con una chiave senza password è davvero un'idea orribile ...
Schmurfy

5

se hai aggiunto la tua chiave privata alla directory source ~ / .ssh e hai inserito ssh-add -K per aggiungerla al portachiavi e hai i contenuti della tua chiave pubblica copiati in .ssh / authorized_keys (per la corretta account) sul server di destinazione la finestra di dialogo scompare.

è una combinazione complicata di file, autorizzazioni, posizioni e comandi, quindi può richiedere del tempo. non mi affretterei a una conclusione sui bug.


3

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


1
Lo considero anche come un bug, tutto funzionava bene con Snow Leopard ma ogni volta che il mio computer torna dalla modalità di sospensione viene richiesta di nuovo la password della chiave ssh anche se ho controllato "ricordalo" l'ultima volta che lo ha chiesto! Molto fastidioso ...
Schmurfy,

3

Non dovrebbe essere necessario rigenerare le chiavi pubbliche. Puoi semplicemente eseguire questi due comandi:

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

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


3

Nell'ultima versione di macOS (10.12.2 - Sierra) questa è una soluzione semplice. Basta modificare ~ / .ssh / config e abilitare l'opzione UseKeychain:

Host *
UseKeychain yes

Salva e risolto.


2

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


Questo è ciò che il mio problema ha risolto anche dopo essere rimasto in piedi per un'ora.
DannyRe

2
  1. Assicurati che ~ / .ssh / sia chmod 700.

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

  3. Esegui / Applicazioni / Utilità / Keychain Access.app e ripara il portachiavi.

  4. Disconnettersi. (Il riavvio non sarebbe un'idea terribile)

  5. Accesso

  6. Se il problema persiste, sposta i file ~ / .ssh / id * esistenti sul desktop e prova a generare nuove chiavi usando ssh-keygen -t dsa -f ~/.ssh/id_dsa -C you@youremail.tlde vedi 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 costretto a indossare un cartello in modo che altre persone sappiano di non ricevere consigli da loro.


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 uccido prima ssh-agent, mi viene richiesta la password del portachiavi di accesso che recupera la password della chiave SSH.


Ciao, questa sembra una domanda separata, piuttosto che una risposta a questa domanda. Puoi ripubblicare come nuova domanda?
Scot,

1

Un altro risultato interessante è che se copi e incolli il contenuto del file PEM, è possibile che alla fine manchi il trattino. Quindi ricorda di aggiungere l'ultima riga come

-----END RSA PRIVATE KEY-----

Qualcosa di simile è che quando si incolla un tasto ssh da qualcosa come lastpass, si incolla tutto su una riga. Questo sembrava essere un problema per me, e una volta divisa la chiave privata su spazi bianchi nel formato corretto, ha funzionato.
Cameron Gagnon,

1

Ho dovuto fare i seguenti passi 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 git@github.com

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


0

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

1) Backup eseguito rinominando i vecchi file id_dsa e id_dsa.pub.

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

Funziona con il processo del periodo di avvio monitorando un server remoto e accedendo da ssh in un terminale.

Ho una funzione di autorizzazione 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 un remoteerver authme veloce copierà la nuova chiave remota.

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

Provalo e vedi se aiuta.

Non ci sono voluti più di 10 minuti per fare. Ho passato a cercare su Google per sempre se ci fossero altre menzioni al riguardo. Questo sito è stato l'unico!

Owain.


L'utilizzo di una passphrase vuota non è un'opzione per me, sfortunatamente
titaniumdecoy

0

Ho avuto un problema simile. Si è scoperto che la chiave privata che stavo usando era in un formato errato. Ho usato PuTTY Key Generator sulla mia macchina Win e ssh su OS X si aspetta un formato diverso - Apri 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 priv nel formato richiesto da Open SSH.

Semplice come:

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

Il file che salverai contiene la tua chiave privata originale nel formato corretto (OpenSSH).


0

Assicurati che:

  1. Stai utilizzando il formato pem per la tua chiave privata. Questo perché Mac utilizza un client openssh che funziona con pem. ppk è il formato proprietario di putty 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 per essere accessibili solo dal loro proprietario. Quindi, se le autorizzazioni danno accesso in lettura a qualcun altro, sarà considerata una minaccia alla sicurezza.

Questo dovrebbe sperare di risolvere il problema.


-1

Utilizzare la chiave .pem anziché la chiave .ppk.


1
Siamo alla ricerca di risposte lunghe che forniscano una spiegazione e un contesto. Non dare solo una risposta di una riga; spiega perché la tua risposta è giusta, idealmente con citazioni. Le risposte che non includono spiegazioni potrebbero essere rimosse.
Tetsujin,
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.