Usar chaves SSH é mais seguro do que senhas, e isso se aplica ao Git também. 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 – ele na verdade 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 ele usa ssh
sob o capô.
Porque ele usa seu padrão ssh
comando, ele vai agir como se você tivesse acabado de executá-lo sozinho e usar sua chave padrão no ~/.ssh/id_rsa
. Provavelmente não é o que você quer se estiver lendo isso, então, para alterá-lo, você precisará editar a configuração do SSH – não a do Git.
Fazendo uma nova chave SSH
Você precisará de um para fazer isso em primeiro lugar, e isso é muito fácil. Simplesmente corra ssh-keygen
e especifique um novo nome de chave com o -f
bandeira. Isso criará uma chave privada e uma chave pública com o .pub
extensão.
ssh-keygen -t rsa -f ~/.ssh/github
Editando ~ / .ssh / config
O arquivo de configuração do SSH permite definir “Hosts” que corresponderão com base no que você está conectando e permitir a modificação do arquivo que ssh
usa.
Host github Hostname github.com IdentityFile ~/.ssh/id_rsa.github IdentitiesOnly yes
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 personal Hostname github.com IdentityFile ~/.ssh/githubpersonal IdentitiesOnly yes Host work Hostname github.com IdentityFile ~/.ssh/githubwork IdentitiesOnly yes
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 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 deseja substituí-la temporariamente, o Git também fornece o GIT_SSH_COMMAND
variável de ambiente. Você pode
GIT_SSH_COMMAND='ssh -i ~/.ssh/github -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
Qualquer comando Git executado posteriormente na mesma sessão de shell usará esse comando SSH em vez do padrão. Você também pode definir um binário SSH totalmente diferente com GIT_SSH
.
0 Comments