Usar chaves SSH é mais seguro do que senhas, e isso também se aplica ao Git. Apesar disto, ao contrário de uma senha, é mais difícil alterar sua chave SSH ou gerenciar várias chaves. Apesar disto, ao editar sua configuração SSH, pode se conectar a vários repositórios Git com chaves diferentes.
Como o SSH funciona com Git?
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. Faz em silêncio, então você pode não estar ciente dos comandos que está executando, mas use ssh
underhood.
Porque ele usa seu padrão ssh
comando, você vai agir como se você mesmo tivesse executado, e usará sua chave padrão em ~/.ssh/id_rsa
. Provavelmente não é o que você quer se estiver lendo isso, então para mudar isso, você precisará editar a configuração SSH, não o do Git.
Faça uma nova chave SSH
Você precisará de um para fazer isso em primeiro lugar, e fazer isso é bastante simples. Apenas 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 SSH permite configurar “Hosts” que vai coincidir com base no que você está conectando e permitir 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 de git separados? Como um exemplo, um para sua conta de trabalho e um para sua conta pessoal.
Nós vamos, você precisará definir duas configurações com nomes diferentes, usando o mesmo hospedeiro:
Host personal
Hostname github.com
IdentityFile ~/.ssh/githubpersonal
IdentitiesOnly yes
Host work
Hostname github.com
IdentityFile ~/.ssh/githubwork
IdentitiesOnly yes
Em geral, isso resultaria em uma configuração conflitante, mas Git fornece uma maneira de contornar isso. Se você tiver um repositório remoto como o Github ligado ao seu repositório local, Dispose:
git remoto remover origem
Então, em vez de adicionar github.com
tão remoto, substitua-o pelo nome do host no arquivo de configuração SSH. O Git reconhecerá isso e usará este host SSH para se conectar. Você pode configurar hosts separados por repositório.
git remote add origin git @ personal:nome de usuário / repository.git
Controle manual
Se você não quiser mexer com as configurações de SSH, ou você apenas deseja substituí-lo temporariamente, Git também fornece o GIT_SSH_COMMAND
Variável Ambiental. 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á esse comando SSH em vez do padrão. Você também pode configurar um binário SSH totalmente diferente com GIT_SSH
.