Como usar uma chave SSH privada diferente para comandos Git Shell

by Admin

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.

Related Posts

Leave a Comment