Salva le identità aggiunte da ssh-add in modo che persistano


19

Di recente ho installato in opensshmodo da poterlo utilizzare con git.

Nel processo di impostazione (come da questo articolo ) ho eseguito i comandi:

$ eval "$(ssh-agent -s)"
$ ssh-add ~/.ssh/<name of key>

Qualche tempo dopo, dopo essermi disconnesso e rientrato, ho provato a utilizzare git pushho ricevuto un errore. La soluzione a questo errore stava eseguendo di nuovo quegli stessi comandi.

Per favore, dimmi come posso

  • Continua a ssh-agentcorrere così non devo iniziarne uno nuovo
  • Ricorda le chiavi che ho aggiunto, quindi non devo aggiungerle ogni volta

Giusto per chiarire, uso zsh in modo che alcune funzioni bash non funzionino nel mio .zshrc.


Dovresti iniziare con la comprensione di cosa serve ssh-agente come funziona prima di provare ad adattarlo al tuo caso d'uso contorto.
Jakuje,

Che errore hai?
Jakuje,

@Jakuje L'errore riguardava un pubkey mancante e chiese "Hai avviato ssh-agent?".
Timotree,

Risposte:


21

A cosa serve ssh-agente come funziona?

La ssh-agentmantiene le chiavi decriptati in modo sicuro nella memoria e nella sessione. Non esiste un modo ragionevole e sicuro per preservare le chiavi decrittografate tra i riavvii / i nuovi accessi.

OK, come posso automatizzarlo?

Automatizza l' ssh-agentavvio

Inserisci

[ -z "$SSH_AUTH_SOCK" ] && eval "$(ssh-agent -s)"

al tuo ~/.bashrco altro script di avvio ( ~/.zshrc).

Automatizza l'aggiunta delle chiavi

Le chiavi possono essere aggiunte automaticamente al primo utilizzo, quando si aggiunge

AddKeysToAgent yes

al tuo ~/.ssh/config.

Per ulteriori informazioni su ~/.ssh/configvedere man ssh_config.


Quindi stai dicendo se abilito AddKeysToAgent, quindi ogni volta che scrivo eval "$(ssh-agent -s)"aggiungerà la mia chiave?
Timotree,

Se l'agente è in esecuzione e l'utente sshsupporta questa opzione, quindi sì.
Jakuje,

Potete chiarire per favore come automatizzerei a partire da ssh-agentallora?
timotree

Fondamentalmente, come spiegato nell'altra risposta. [ -z "$SSH_AUTH_SOCK" ] && eval $(ssh-agent)
Jakuje,

Funziona con zsh?
Timotree,

3

Aggiungi questo a ~/.bashrc

Questo significa che ssh-agent verrà avviato automaticamente quando apri un'altra sessione senza il tuo terminale

if [ -z "$SSH_AUTH_SOCK" ] ; then
 eval `ssh-agent -s`
fi

se è necessario aggiungere una chiave all'agente, aggiungere anche questo

if [ -z "$SSH_AUTH_SOCK" ] ; then
 eval `ssh-agent -s`
 ssh-add ~/.ssh/<your private ssh key>
fi

1
Questa è stata una buona risposta ma non spiega cosa fa il comando.
Timotree,
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.