2016-09-22 09:21:53 +0000 2016-09-22 09:21:53 +0000
607
607

macOS continua a chiedere la mia passphrase ssh da quando ho aggiornato a Sierra

Prima ricordava la passphrase, ma ora me la chiede ogni volta.

ho letto che devo rigenerare la chiave pubblica con questo comando, cosa che ho fatto:

ssh-keygen -y -f id_rsa > id_rsa.pub

ma non ha risolto nulla.

Come posso fare in modo che macOS ricordi di nuovo la mia passphrase?

Risposte (12)

1168
1168
1168
2016-12-19 12:04:25 +0000

Nell'ultima versione di macOS (10.12.2), questo è facile da risolvere. Basta modificare il tuo ~/.ssh/config e abilitare l'opzione UseKeychain:

Host *
    UseKeychain yes

Non c'è bisogno di cambiare altro. Ora tutto funziona come funzionava prima degli ultimi aggiornamenti. Non è necessario aggiungere chiavi a ssh-agent.


Modifica: Potrebbe ancora essere necessario inserire la tua passphrase una volta. Se non la conosci, segui queste istruzioni per rivelarla.

193
193
193
2016-09-23 12:53:05 +0000

Ho avuto lo stesso problema. Il portachiavi di MacOS Sierra continua a chiedere la passphrase. Il tuo id\rsa dovrebbe essere criptato con una passphrase per sicurezza. Poi prova ad aggiungerlo al portachiavi ssh-add -K ~/.ssh/id_rsa

Se la tua chiave è in un'altra cartella rispetto a ~/.ssh allora sostituiscila con la cartella corretta.

Keychain ora conosce la vostra chiave ssh e, si spera, tutto funziona ora (la mia lo faceva)

75
75
75
2016-10-09 14:39:56 +0000

Questo ha risolto il mio problema simile:

/usr/bin/ssh-add -K

Questo memorizza le passphrase nel tuo portachiavi.

Aggiornamento (grazie @EasyCo): Questo funziona ma non persiste tra i riavvii. La soluzione di @jukka-suomela in questa pagina funziona tra i riavvii. Puoi trovare quella risposta qui: https://superuser.com/a/1158050/234685

41
41
41
2016-10-29 17:16:24 +0000

Ho dovuto inserire la passphrase corretta solo una volta e ha iniziato a funzionare. Il problema era che non ricordavo la mia passphrase SSH originale, ma l'ho recuperata seguendo questi passi da Github:

  • Nel Finder, cerca l'app Keychain Access.
  • In Accesso Portachiavi, cerca SSH.
  • Fai doppio clic sulla voce della tua chiave SSH per aprire una nuova finestra di dialogo.
  • Finestra di dialogo di Accesso PortachiaviNell'angolo in basso a sinistra, seleziona Mostra password.
  • Ti verrà richiesta la tua password amministrativa. Inseriscila nella finestra di dialogo “Accesso portachiavi”.
  • La tua password sarà rivelata.
19
19
19
2016-09-27 14:40:37 +0000

Nessuna delle soluzioni di cui sopra ha funzionato dopo aver installato Sierra su El Capitan su un nuovo MacBook Pro. Sierra per progettazione non salva le chiavi SSH nel portachiavi.

Due soluzioni hanno funzionato per me. Una è aggiungere il comando ssh-add -A &> /dev/null a ~/.bash\profile. Ogni volta che aprite il terminale, questo comando verrà eseguito (la parte &> /dev/null invia l'output del comando al file /dev/null).

Una soluzione più complicata ma leggermente più furba è quella di creare una plist con il comando che viene eseguito ogni volta che il sistema operativo viene avviato come suggerito in Salvare le chiavi SSH nel portachiavi di macOS Sierra . Questo comporta l'utilizzo di Xcode per creare il file.

18
18
18
2016-12-16 06:14:08 +0000

Una soluzione è aggiungere il seguente al vostro file ~/.ssh/config:

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

Preso da: https://www.reddit.com/r/osx/comments/52zn5r/difficulties\withsshagent_inmacos_sierra/ Anche vedere: https://apple.stackexchange.com/a/264974/3810

8
8
8
2016-09-22 10:58:21 +0000

Questa mattina ho avuto il tuo stesso problema dopo l'aggiornamento a Sierra. Nel mio caso, il file id_rsa era criptato e dopo la decriptazione funzionava a meraviglia.

  1. Verifica se il tuo file id_rsa è criptato con il seguente comando: cat ~/.ssh/id_rsa | head -2
  2. Se la seconda linea dice Proc-Type: 4,ENCRYPTED, è criptato e puoi provare a decriptarlo
  3. Importante: fai un backup del tuo file originale id_rsa! Usa il comando cp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak
  4. Decriptate la vostra chiave privata con openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa.decrypted
  5. Rimuovi la chiave originale (rm ~/.ssh/id_rsa) e sostituiscila con quella decriptata: mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa

Dopo questi passi, dovresti essere in grado di usare di nuovo ssh.

8
8
8
2017-02-15 02:15:22 +0000

Ho provato più risposte qui, ma stavo ancora avendo problemi con il passaggio delle chiavi remote (come quando si usa capistrano). Per risolverlo, ho letto la nota tecnica di Apple e ho reso questo il mio file di configurazione. Niente più richieste di password! https://developer.apple.com/library/content/technotes/tn2449/_index.html

Host *  
IdentityFile ~/.ssh/id_rsa  
IgnoreUnknown UseKeychain  
UseKeychain yes  
AddKeysToAgent yes
5
5
5
2017-01-02 00:05:33 +0000

Ho avuto anch'io questo problema quando ho cercato di distribuire del codice usando Capistrano . Molto frustrante. Ecco due metodi che conosco per affrontare questo problema.

Metodo 1: Aggiungere tutte le chiavi note all'agente SSH.

Quindi una soluzione che ho trovato è quella di eseguire ssh-add con l'opzione -A - che aggiunge tutte le identità conosciute all'agente SSH usando qualsiasi frase chiave memorizzata nel tuo portachiavi, come questa:

ssh-add -A

Ora questo funziona ma non persisterà attraverso i riavvii. Quindi, se non volete più preoccuparvi di questo, aprite semplicemente il file ~/.bash_profile del vostro utente in questo modo:

nano ~/.bash_profile

E aggiungi questa linea in fondo:

ssh-add -A 2>/dev/null;

Ora quando aprite una nuova finestra del Terminale, tutto dovrebbe essere a posto!

Metodo 2: Aggiungere solo le chiavi SSH che sono nel portachiavi all'agente.

Quindi, mentre l'opzione ssh-add -A dovrebbe funzionare per la maggior parte dei casi di base, mi sono imbattuto recentemente in un problema in cui avevo 6-7 box Vagrant (che usa chiavi/identità SSH per l'accesso) configurati su una macchina sopra la più comune id_rsa.pub in atto.

Per farla breve, ho finito per essere bloccato fuori da un server remoto a causa di troppi tentativi falliti basati su chiavi/identità SSH, poiché l'accesso al server era basato su una password e le chiavi/identità SSH sono chiavi/identità SSH. Quindi l'agente SSH ha provato tutte le mie chiavi SSH, ha fallito e non ho potuto nemmeno arrivare al prompt della password.

Il problema è che ssh-add -A aggiungerà arbitrariamente ogni singola chiave/identità SSH che hai all'agente anche se non è necessario farlo; come nel caso dei box Vagrant.

La mia soluzione dopo molte prove è stata la seguente.

Per prima cosa, se avete più chiavi/identità SSH aggiunte al vostro agente di quante ve ne servano - come mostrato con ssh-add -l allora eliminatele tutte dall'agente in questo modo:

ssh-add -D

Fatto questo, avvia l'agente SSH come processo in background in questo modo:

eval "$(ssh-agent -s)"

Ora, diventa strano e non sono troppo sicuro del perché. In alcuni casi è possibile aggiungere specificamente la chiave/identità ~/.ssh/id_rsa.pub all'agente in questo modo:

ssh-add ~/.ssh/id_rsa.pub

Digita la tua passphrase, premi Return e dovresti essere pronto a partire.

Ma in altri casi è sufficiente eseguire questo per ottenere la chiave/identità aggiunta:

ssh-add -K

Se tutto questo ha funzionato, digita ssh-add -l e dovresti vedere una sola chiave/identità SSH elencata.

Tutto bene? Ora aprite il vostro .bash_profile:

nano ~/.bash_profile

E aggiungi questa linea in fondo; commenta o rimuovi la versione -A se ce l'hai già:

ssh-add -K 2>/dev/null;

Questo permetterà alla chiave/identità SSH di essere ricaricata nell'agente SSH ad ogni avvio/riavvio.

UPDATE: Apple ha ora aggiunto un'opzione UseKeychain alle opzioni di configurazione SSH aperte e considera anche ssh-add -A una soluzione.

A partire da macOS Sierra 10.12.2, Apple (presumo) ha aggiunto un'opzione di configurazione UseKeychain per le configurazioni SSH. Controllando la pagina man (tramite man ssh_config) si trovano le seguenti informazioni:

UseKeychain
        On macOS, specifies whether the system should search for
        passphrases in the user's keychain when attempting to use a par-
        ticular key. When the passphrase is provided by the user, this
        option also specifies whether the passphrase should be stored
        into the keychain once it has been verified to be correct. The
        argument must be ``yes'' or ``no''. The default is ``no''.

Il che significa che Apple vede la soluzione come aggiungere ssh-add -A al tuo .bash_profile come spiegato in questo ticket di Open Radar o aggiungere UseKeychain come una delle opzioni in un ~/.ssh/config per utente.

4
4
4
2017-01-28 08:58:48 +0000

[ Jukka Suomela ]La risposta è corretta, ma se stai usando openssh installato da homebrew, allora devi anche disinstallarlo con:

brew remove openssh

…per tornare all'openssh di default del sistema, perché quello di homebrew non supporta la voce di configurazione ssh di UseKeychain.

2
2
2
2016-12-10 21:04:01 +0000

Hai bisogno di un file .plist aggiunto a ~/Library/LaunchAgents/ per eseguire ssh-add -A ad ogni avvio di macOS.

C'è un solo comando che fa questo (da SSH-keys-in-macOS-Sierra-keychain ) che è:

curl -o ~/Library/LaunchAgents/ssh.add.a.plist https://raw.githubusercontent.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain/master/ssh.add.a.plist
2
2
2
2017-01-01 23:56:10 +0000

Ho provato tutte le soluzioni suggerite qui, ma non ho il portachiavi impostato nel mio Mac.

Aggiungendo la seguente linea in cima al file .ssh/config sia sulla macchina locale che su quella remota ha funzionato per me.

PubkeyAcceptedKeyTypes=+ssh-dss