Usar chaves SSH é mais seguro do que senhas, e isso também se aplica ao Git. Ao contrário de uma senha, no entanto, é mais difícil alterar sua chave SSH ou gerenciar várias chaves. Porém, ao editar sua configuração SSH, você pode se conectar a vários repositórios Git com chaves diferentes.
Como o SSH funciona com o Git?
O Git não usa apenas sua chave privada para autenticar quando você usa SSH em vez de HTTPS — na verdade, ele estabelece uma conexão SSH real com o servidor remoto. Ele faz isso silenciosamente, então você pode não estar ciente dos comandos que está executando, mas usa ssh nos bastidores.
Por usar seu comando ssh padrão, ele agirá como se você tivesse acabado de executá-lo sozinho e usará sua chave padrão em ~ / . ssh / id_rsa. Provavelmente não é o que você deseja se estiver lendo aqui, portanto, para alterá-lo, você precisará editar a configuração do SSH &’ não do Git &’ s.
Fazendo uma nova chave SSH
Você precisará de um para fazer isso em primeiro lugar, e é muito fácil fazer isso. Simplesmente execute ssh-keygen e especifique um novo nome de chave com o sinalizador -f. Isso criará uma chave privada e uma chave pública com a extensão . pub.
ssh-keygen -t rsa -f ~ / . ssh / github
Editando ~ / . ssh / config
O arquivo de configuração do
SSH permite a configuração de “ Hosts ” que corresponderá com base no que você está conectando e permitirá a modificação do arquivo que o ssh usa.
Host github Nome do host github. com IdentityFile ~ / . ssh / id_rsa. github IdentitiesSomente sim
Publicidade
Isso permitirá que você use uma chave SSH diferente da principal para todas as solicitações que vão para github. com, mas e se você quiser usar duas chaves diferentes para repositórios Git separados? Por exemplo, um para sua conta de trabalho e outro para sua conta pessoal.
Bem, você precisará definir duas configurações com nomes diferentes, usando o mesmo host:
Host pessoal Nome do host github. com IdentityFile ~ / . ssh / githubpersonal IdentitiesSomente sim Host work Hostname github. com IdentityFile ~ / . ssh / githubwork IdentitiesSomente sim
Normalmente, isso resultaria em uma configuração conflitante, mas o Git fornece uma maneira de contornar isso. Se você tiver um repositório remoto como o Github vinculado ao seu repo local, exclua-o:
git remote remove origin
Então, em vez de adicionar github. com como o remoto, substitua-o pelo nome do Host no arquivo de configuração SSH. O Git reconhecerá isso e usará esse host SSH para se conectar. Você pode definir hosts separados por repositório.
git remote add origin git @ personal: username / repository. git
Substituindo manualmente
Se você não quiser mexer com a configuração do SSH, ou apenas quiser substituí-la temporariamente, o Git também fornece a variável de ambiente GIT_SSH_COMMAND. Você pode
GIT_SSH_COMMAND = 'ssh -i ~ / . ssh / github -o UserKnownHostsFile = / dev / null -o StrictHostKeyChecking = no'
Qualquer comando Git que você executar posteriormente na mesma sessão de shell usará aquele comando SSH em vez do padrão. Você também pode definir um binário SSH totalmente diferente com GIT_SSH.