4 formas de especificar a chave privada a ser usada em comandos Git
Para Magenteiros
Publicado em 17 de julho de 2023
Git é frequentemente utilizado para publicar projetos em produção, ou mesmo mantê-los atualizados. Além de ser uma boa ideia, quando bem configurado, ele pode ser um bom dedo duro. Isto é, podemos facilmente verificar se algum desenvolvedor, cliente, ou mesmo um hacker modificou alguma coisa em nosso projeto.
Como boa prática, também nunca devemos alterar arquivos diretamente em produção a fim de corrigir bugs ou testar novos desenvolvimentos.
Neste ponto, o git também pode ser um aliado. Com ele, podemos ter chaves de deploy (deploy keys). Estas chaves podem ser configuradas de forma que determinados servidores tenham permissão apenas para puxar (pull) informações de nossos repositórios, mas nunca escrever neles (push).
Como criar uma chave de deploy
Se você estiver usando o Github, acesse a aba Settings do seu repositório, e depois clique em Deploy keys localizado na área de Segurança.
Nesta tela são listadas todas as chaves de deploy cadastradas para seu projeto. Para adicionar uma nova, clique em “Add deploy key”(3).
Como gerar a chave ssh
Para gerar uma chave ssh, digite no terminal do servidor, certifique-se de estar logado com o usuário que irá fazer o clone/pull do projeto e siga os passos a seguir:
- Digite
ssh-keygen
para gerar a chave. Especifique o caminho onde a chave será salva (por padrão em /home/do/usuario/.ssh/id_rsa), e deixe os demais dados como padrão. - Em seguida, copie o conteúdo da chave pública gerada.
- Cole a chave pública (.pub) gerada no campo Key da tela de adição das chaves de deploy (acima).
Que chave será usada no git clone?
Por padrão, o git usa a chave do usuário, localizada na pasta padrão.
No entanto, se especificarmos uma outra chave, como fizemos, precisaremos de alguns passos a mais.
Porque/quando não usar a chave-padrão
Em alguns casos, podemos ter mais de um projeto git no mesmo servidor. Por exemplo um blog, e uma loja virtual que possuem repositórios diferentes.
Consequentemente, precisaremos de chaves diferentes. Isto porque o github não permite que uma mesma chave seja usada em dois projetos distintos. O mesmo vale no Bitbucket ou outros serviços git.
Como especificar a chave que será usada no clone ou pull no git
Existem pelo menos quatro formas de se especificar qual chave ssh será usada em um ou mais comandos git.
1. Especificando a chave ao executar o comando git específico
Para isso, basta digitar:
git -c core.sshCommand="ssh -i ~/.ssh/<your_key>" clone [email protected]:<user>/<repo>.git
Neste caso, estou especificando os parâmetros core.sshCommand="ssh -i ~/.ssh/<sua_chave>"
que informam ao git um comando ssh com a nossa chave específica. Veja um exemplo inteiro do comando acima:
git -c core.sshCommand="ssh -i /root/.ssh/id_rsa_woo" clone [email protected]:r-martins/woo-pagseguro-exemplo.git .
Você deverá sempre especificar o -c core.sshCommand="ssh -i ~/.ssh/<sua_chave_privada>"
entre a palavra git
e o restante do comando.
2. Tornando a configuração global durante aquela sessão
Outra alternativa é exportar/modificar a variável GIT_SSH_COMMAND
antes de executar seus comandos git.
export GIT_SSH_COMMAND="ssh -i /caminho/sua/chave/privada"
Após isso, todos os comandos git daquela sessão usarão esta chave.
3. Usando git config (por projeto ou globalmente)
A partir do git 2.10.0, você pode definir o comando acima como uma configuração global do git ou por projeto.
Dentro da pasta do projeto, você pode digitar:
git config core.sshCommand "ssh -i /caminho/chave/privada -o 'IdentitiesOnly yes'"
Isto adicionará a configuração ao arquivo .git/config
do projeto atual.
Para tornar a configuração global (todos os projetos deste servidor/usuário), adicione --global
ao comando acima.
4. Usando uma chave git diferente em shell script
Se você estiver criando um arquivo de shell script e desejar usar uma chave git diferente em todos os comandos dele, basta adicionar as duas linhas abaixo antes de executar seus comandos git:
# Inicia o ssh-agent eval "$(ssh-agent -s)" # Adiciona a chave SSH desejada ao ssh-agent ssh-add /caminho/chave/privada
Conclusão
Existem formas e ferramentas que lhe permitem realizar deploys de forma profissional e automática sem precisar esquentar tanto a cabeça com a chave que será utilizada.
A exemplo destes serviços, temos o CircleCi, Trevis, Jenkins, e muitos outros.
Mas se você utiliza o git para publicar e gerenciar seus projetos, certamente é bom ter este artigo em seus favoritos. Um dia você vai precisar.
Espero que tenha sido útil pra você.
Grande abraço e até a próxima.
- PagSeguro (PagBank) para Magento 1 recebe a Nova Geração - 9 de abril de 2024
- Recorrência no WooCommerce Sem Plugins Pagos - 28 de janeiro de 2024
- Chargeback. O que é, e como se livrar deles. - 19 de dezembro de 2023
Deixe seu comentário
[fbcomments url="https://www.magenteiro.com/blog/para-magenteiros/chave-git-ssh-como-configurar/"]