ssh-add não é persistente entre as reinicializações

140

Adicionei uma chave ssh ao agente por:

$ ssh-add ~/.ssh/id_rsa_mac
Identity added: /Users/alex/.ssh/id_rsa_mac (/Users/alex/.ssh/id_rsa_mac)

Após a reinicialização, o agente não tem mais essa chave adicionada:

$ ssh-add -l
The agent has no identities.

Por que isso aconteceu?

    
por アレックス 01.07.2014 / 04:09

3 respostas

162

A adição de chaves ao agente é transitória. Eles duram apenas enquanto o agente estiver em execução. Se você matá-lo ou reiniciar o computador, ele será perdido até que você o adicione novamente. Na página ssh-agent man:

ssh-agent is a program to hold private keys used for public key authentication (RSA, DSA, ECDSA). The idea is that ssh-agent is started in the beginning of an X-session or a login session, and all other windows or programs are started as clients to the ssh-agent program. Through use of environment variables the agent can be located and automatically used for authentication when logging in to other machines using ssh(1).

The agent initially does not have any private keys. Keys are added using ssh-add(1). When executed without arguments, ssh-add(1) adds the files ~/.ssh/id_rsa, ~/.ssh/id_dsa, ~/.ssh/id_ecdsa and ~/.ssh/identity. If the identity has a passphrase, ssh-add(1) asks for the passphrase on the terminal if it has one or from a small X11 program if running under X11. If neither of these is the case then the authentication will fail. It then sends the identity to the agent. Several identities can be stored in the agent; the agent can automatically use any of these identities. ssh-add -l displays the identities currently held by the agent.

macOS Sierra

Começando com o macOS Sierra 10.12.2 , a Apple adicionou uma opção de configuração UseKeychain para configurações de SSH. Você pode ativar esse recurso adicionando UseKeychain yes ao seu ~/.ssh/config .

Host *
  UseKeychain yes

OSX Keychain

Eu não uso o OSX, mas encontrei este Q & A no SuperUser intitulado: Como usar o Mac OS X Keychain com chaves SSH? .

I understand that since Mac OS X Leopard the Keychain has supported storing SSH keys. Could someone please explain how this feature is supposed to work.

Então, a partir do som, você pode importar suas chaves SSH para o Keychain usando este comando:

$ ssh-add -K [path/to/private SSH key]

Suas chaves devem persistir da inicialização até a inicialização.

Whenever you reboot your Mac, all the SSH keys in your keychain will be automatically loaded. You should be able to see the keys in the Keychain Access app, as well as from the command line via:

  ssh-add -l

Fonte: Super User - Como usar o Mac OS X Keychain com chaves SSH?

    
por 01.07.2014 / 04:18
18

O ssh-agent é um serviço de sessão que armazena chaves temporariamente para o usuário.

O objetivo principal do agente SSH é lembrar a versão em texto não criptografado de uma chave protegida usando uma frase secreta. Em outras palavras, a chave é armazenada no disco criptografado usando uma frase secreta e o proprietário da chave usa ssh-add ou alguma ferramenta GUI para fornecer a frase secreta e instruir o agente a lembrá-lo até que a sessão saia ou o usuário solicite a remoção explicitamente .

Se você não estiver usando uma frase secreta e não estiver usando o encaminhamento de agente (que é inseguro para a maioria das finalidades), você não precisa do agente . Qualquer cliente SSH deve conseguir ler a chave do disco, seja de um local padrão ou de um local especificado explicitamente.

As localizações padrão estão listadas na página de manual ssh(1) :

The default is ~/.ssh/identity for protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 and ~/.ssh/id_rsa for protocol version 2.

Ao usar locais fora do padrão, você pode usar a opção -i para ssh descrita na mesma página de manual ou a respectiva opção no cliente SSH que você está usando.

    
por 01.07.2014 / 08:55
5

Em Sierra :

Use UseKeychain . (Eu não tentei isso, mas parece a solução mais correta.)

Ou

ssh-add -K /your/key
echo ssh-add -A | cat >> ~/.bash_profile

Ou crie um arquivo plist em vez de anexar a ~/.bash_profile .

Aviso de isenção de responsabilidade: como os outros observaram, não sei como é seguro armazenar senhas ssh no chaveiro.

    
por 08.01.2017 / 06:23