desenv-web-rp.com

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

Adicionei uma chave ssh ao agente:

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

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

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

Por quê isso aconteceu?

160
アレックス

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

o ssh-agent é um programa para armazenar chaves privadas usadas para autenticação de chave pública (RSA, DSA, ECDSA). A idéia é que o ssh-agent seja iniciado no início de uma sessão X ou de sessão de logon e todas as outras janelas ou programas sejam iniciados como clientes do programa ssh-agent. Através do uso de variáveis ​​de ambiente, o agente pode ser localizado e usado automaticamente para autenticação ao efetuar login em outras máquinas usando o ssh (1).

O agente inicialmente não possui nenhuma chave privada. As chaves são adicionadas usando o ssh-add (1). Quando executado sem argumentos, o ssh-add (1) adiciona os arquivos ~/.ssh/id_rsa, ~/.ssh/id_dsa, ~/.ssh/id_ecdsa e ~/.ssh/identity. Se a identidade tiver uma senha, ssh-add (1) solicitará a senha no terminal, se houver um ou em um pequeno programa X11, se estiver executando o X11. Se nenhum desses for o caso, a autenticação falhará. Em seguida, ele envia a identidade ao agente. Várias identidades podem ser armazenadas no agente; o agente pode usar automaticamente qualquer uma dessas identidades. ssh-add -l exibe as identidades atualmente mantidas pelo agente.

macOS Sierra

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

Host *
  UseKeychain yes

Chaveiro OSX

Eu não uso o OSX, mas encontrei estas perguntas e respostas no superusuário intitulado: Como usar o Mac OS X Keychain com chaves SSH? .

Entendo que, desde o Mac OS X Leopard, o Keychain suporta o armazenamento de chaves SSH. Alguém poderia explicar como esse recurso deve funcionar.

Portanto, pelo 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 de inicialização para inicialização.

Sempre que você reiniciar o seu Mac, todas as chaves SSH no seu chaveiro serão carregadas automaticamente. Você poderá ver as chaves no aplicativo Keychain Access, bem como na linha de comando via:

  ssh-add -l

Fonte: Superusuário - Como usar o Mac OS X Keychain com chaves SSH?

183
slm

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

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

Se você não estiver usando uma senha e não estiver encaminhando o agente (o que é inseguro para a maioria dos propósitos), você não precisa do agente. Qualquer cliente SSH deve poder ler a chave do disco, de um local padrão ou de um especificado explicitamente.

Os locais padrão estão listados na página de manual ssh(1):

O padrão é ~/.ssh/identity para a versão 1 do protocolo e ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 e ~/.ssh/id_ed25519 e ~/.ssh/id_rsa para a versão 2 do protocolo.

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 opção respectiva no cliente SSH que você está usando.

22
Pavel Šimerda

Em Serra :

Use seKeychain . (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.

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

9
David Winiecki

Eu faço isso para me ajudar a habilitar identidades ssh após a reinicialização do mac.

Versão do SO: MacOS catalina versão 10.15.2

  1. Certifique-se de que sua ssh-key tenha uma senha quando você a criar, porque é necessária para o chaveiro. Se você não possui, ainda pode modificar seu no-passphrase-privatekey para ter um executando este comando: ssh-keygen -p -f ~/.ssh/<.your-privatekey-filename.>

  2. Adicione sua chave privada ssh ao chaveiro, execute este comando: ssh-add -K ~/.ssh/<.your-privatekey-filename.>

  3. Adicione todas as suas ssh-privatekey no chaveiro ao seu ssh-agent executando este comando: ssh-add -A

  4. Verifique o seu por ssh-add -l, você verá alguns resultados se tudo funcionar bem.

Você notaria que, após reiniciar o computador, você perdeu sua identidade ssh (ssh-add-l resultado nenhuma identidade encontrada ...). Você pode corrigi-lo de duas maneiras:

  1. Adicionar ssh-add -A ao seu perfil de terminal, por exemplo, se você usar o zsh add ssh-add -A to ~/.zshrc ou qualquer arquivo de configuração do seu perfil.
  2. Você pode adicionar o script de inicialização do macos, criando o arquivo em ~/library/launchchagents/com. <.Seudominio>.>. <. Nome do comando.>. Plist. Ex: c om.myusername.ssh.plist, detalhes do script:

    Rótulo com.user.loginscript ProgramArguments ssh-add -A RunAtLoad

  3. Diga ao launchd para carregar este script a cada reinicialização: launchctl load ~/Library/LaunchAgents/com.myusername.ssh.plist.

  4. De qualquer forma, se você não souber qual é o seu nome de usuário. Você pode executar o comando simples id para ver seu nome de usuário atual.
1
Toni Firnandes