Como usar uma chave SSH privada diferente para comandos Git Shell


0

Logotipo do Git

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.


Like it? Share with your friends!

0

What's Your Reaction?

hate hate
0
hate
confused confused
0
confused
fail fail
0
fail
fun fun
0
fun
geeky geeky
0
geeky
love love
0
love
lol lol
0
lol
omg omg
0
omg
win win
0
win

0 Comments

Your email address will not be published. Required fields are marked *