Agente SSH perde identidade ao reiniciar a máquina

Agente SSH perde identidade ao reiniciar a máquina

Depois de criar chaves com nome id_rsano local padrão. Estou adicionando identidade ao agente SSH com comando ssh-add ~/.ssh/id_rsae está adicionando com sucesso.

Posso fazer SSH sem inserir a senha da chave, pois já está com o Agente SSH.

Mas, quando reinicio a máquina ou servidor e verifico a identidade com o comando, ssh-add -Lrecebo uma mensagem como The agent has no identities.

Isso significa que quando reiniciamos a máquina, o Agente perdeu a identidade? Esse comportamento é normal ou alguma coisa que estou perdendo aqui?

Por favor, me oriente, não estou muito familiarizado com SSH.

Responder1

É normal. O objetivo de um agente de chaves é apenas manter chaves descriptografadasem memória, mas nunca os gravará no disco. (Isso iria contra o propósito – por que não simplesmente desproteger a chave principal?)

Portanto, as chaves devem ser desbloqueadas a cada login, e você precisa automatizar isso – no Linux usar pam_sshé uma opção; automaticamenteusa a senha do seu sistema operacionalpara desbloquear o agente. Outro módulo semelhante é o pam_envoy, que é um pouco mais confiável (mas requer systemd).

Ambos os módulos iniciarão o próprio agente e carregarão as chaves automaticamente.

Responder2

No OS X, ssh-add possui um sinalizador especial para conectar-se ao Keychain se você decidir armazenar sua chave privada lá.

Apenas corra ssh-add -K ~/.ssh/id_rsa.

Acredito que isso responde à sua pergunta de forma mais completa. É difícil encontrar documentação para esse sinalizador específico do OS X, mas está funcionando pelo menos desde o OS X Leopard.

Responder3

Tente isso para o seu~/.bashrc:

if [ ! -S ~/.ssh/id_rsa ]; then
  eval `ssh-agent`
  ln -sf "$SSH_AUTH_SOCK" ~/.ssh/id_rsa
  ssh-add
fi
export SSH_AUTH_SOCK=~/.ssh/id_rsa

Isso só deve solicitar a senha quando você fizer login.

Responder4

Ele precisa ser desbloqueado após cada reinicialização para ser carregado na memória. Para fazer isso, adicione o seguinte ao seu ~/.bashrc:

eval $(ssh-agent)
ssh-add ~/.ssh/id_rsa

Não nomeie um par de chaves id_rsaao criá-lo. Dê às chaves um nome significativo relacionado ao recurso que você está tentando acessar. Pode ser qualquer coisa, não há nada de especial no nome padrão id_rsa.

informação relacionada