Depois de criar chaves com nome id_rsa
no local padrão. Estou adicionando identidade ao agente SSH com comando ssh-add ~/.ssh/id_rsa
e 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 -L
recebo 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_rsa
ao 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
.