Normalmente você executaria ssh-keygen uma vez para criar uma única chave privada ssh em ~/.ssh/id_rsa
, emparelhada com uma única chave pública correspondente em ~/.ssh/id_rsa.pub
. Então você instalaria aquela chave pública em cada uma das máquinas que você precisa para ssh. Por exemplo, se for um repositório do git em uma máquina semelhante ao Unix, você anexaria sua chave pública em ~/.ssh/authorized_keys
no diretório inicial da sua conta nesse servidor .
A maneira típica ssh
funciona é que você tem um único par de chaves público-privadas que representa você e mantém a chave privada privada, mas instala a chave pública em todas as contas em todos os servidores que você precisa acessar.
Depois disso, você pode usar ssh
nessa máquina ou clonar um repo via git clone ssh://...
ou qualquer outra coisa, sem precisar digitar uma senha.
Em vez de configurar ssh
da maneira típica descrita acima, você gerou dois pares de chaves pública-privada separados, e eles não estão na sua pasta ~/.ssh/
e, portanto, ssh
não é capaz de encontrá-los normalmente. Parece que você instalou duas chaves públicas separadas em outros servidores, uma em cada um dos dois servidores de repositório git. Também parece que você ativou ssh-agent
e usou ssh-add
com argumentos para informar sobre algum local alternativo onde poderia encontrar seus pares de chaves públicas privadas. Portanto, toda vez que você efetuar logout ou reiniciar, ssh-agent
será encerrado e, portanto, será necessário executar novamente manualmente ssh-agent
e ssh-add
.
Esta explicação do que está acontecendo para você parece mais provável para mim do que a ideia de que algo está excluindo ~/.ssh/
cada vez que você reinicia.
Se eu fosse você, escolheria um dos meus dois pares de chaves para ser minha identidade, colocaria esse par em ~/.ssh/
, instalaria a chave pública desse único par em ambos os servidores git repo e não se incomodaria com ssh-agent
e ssh-add
de todo.
Note, no entanto, que há um passo adicional que você precisa fazer, SE seu nome de usuário nos servidores de repositório git for diferente do seu nome de usuário que você está usando para sua conta local em sua máquina cliente. Você precisa criar um arquivo ~/.ssh/config
para permitir que ssh
saiba qual nome de usuário usar ao se conectar a essas outras máquinas. O formato é muito simples:
Host gitrepo1.example.com
User myGitRepo1Username
Host gitrepo2.example.com
User myGitRepo2Username