Salve as identidades adicionadas por ssh-add para que elas persistam


19

Eu configurei recentemente opensshpara poder usá-lo git.

No processo de configuração (conforme este artigo ), executei os comandos:

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

Algum tempo depois, depois que eu saí e voltei, tentei usar git push, recebi um erro. A solução para esse erro estava executando esses mesmos comandos novamente.

Por favor me diga como eu posso

  • Continue ssh-agentcorrendo para não precisar iniciar um novo
  • Lembre-se das chaves que adicionei, para não precisar adicioná-las sempre

Apenas para esclarecer, eu uso o zsh para que certos recursos do bash não funcionem no meu .zshrc.


Você deve começar entendendo o que é ssh-agente como funciona antes de tentar adequá-lo ao seu caso de uso distorcido.
Jakuje 4/16/16

Qual erro você recebeu?
Jakuje 4/12/16

@Jakuje O erro foi sobre a falta de um pubkey e perguntou "Você iniciou o ssh-agent?".
timotree

Respostas:


21

Para que serve ssh-agente como funciona?

O ssh-agentmantém suas chaves descriptografadas com segurança na memória e na sua sessão. Não há uma maneira razoável e segura de preservar as chaves descriptografadas entre reinicializações / novos logins.

OK, como posso automatizá-lo?

Automatizar a ssh-agentinicialização

Adicionar

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

para o seu ~/.bashrcou outro script de inicialização ( ~/.zshrc).

Automatizar a adição de chaves

As chaves podem ser adicionadas automaticamente após o primeiro uso, quando você adiciona

AddKeysToAgent yes

para o seu ~/.ssh/config.

Para mais informações, ~/.ssh/configconsulte man ssh_config.


Então você está dizendo que se eu ativar o AddKeysToAgent, sempre que eu digitar, eval "$(ssh-agent -s)"ele adicionará minha chave?
timotree

Se o agente estiver em execução e o seu sshsuportar esta opção, sim.
Jakuje 4/16/16

Você pode esclarecer como eu automatizaria o início do ssh-agententão?
timotree

Basicamente, como explicado na outra resposta. [ -z "$SSH_AUTH_SOCK" ] && eval $(ssh-agent)
Jakuje 4/16/16

Isso funciona com o zsh?
timotree

3

Adicione isto a ~/.bashrc

Isso significa que o ssh-agent será iniciado automaticamente quando você abrir outra sessão no seu terminal

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

se você precisar que uma chave seja adicionada ao agente, adicione-a

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

1
Essa foi uma boa resposta, mas não explica o que o comando faz.
timotree
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.