Chapters ▾ 2nd Edition

4.3 Git no Servidor - Gerando a sua Chave Pública SSH

Gerando a sua Chave Pública SSH

Muitos servidores Git se autenticam usando chaves públicas SSH. Para fornecer uma chave pública, cada usuário no seu sistema deve gerar uma se ainda não tiver. Este processo é semelhante em todos os sistemas operacionais. Primeiro, você deve verificar se já não tem uma chave. Por padrão, as chaves SSH de um usuário são armazenadas no diretório ~/.ssh desse usuário. Você pode verificar facilmente se já tem uma chave acessando esse diretório e listando o conteúdo:

$ cd ~/.ssh
$ ls
authorized_keys2  id_dsa       known_hosts
config            id_dsa.pub

Você está procurando um par de arquivos chamados algo como id_dsa ou id_rsa e um arquivo correspondente com a extensão .pub. O arquivo .pub é a sua chave pública, e o outro arquivo é a chave privada correspondente. Se você não tiver esses arquivos (ou nem mesmo tiver um diretório .ssh), pode criá-los executando um programa chamado ssh-keygen, que é fornecido com o pacote SSH nos sistemas Linux/macOS e vem com o Git para Windows:

$ ssh-keygen -o
Generating public/private rsa key pair.
Enter file in which to save the key (/home/schacon/.ssh/id_rsa):
Created directory '/home/schacon/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/schacon/.ssh/id_rsa.
Your public key has been saved in /home/schacon/.ssh/id_rsa.pub.
The key fingerprint is:
d0:82:24:8e:d7:f1:bb:9b:33:53:96:93:49:da:9b:e3 schacon@mylaptop.local

Primeiro ele confirma onde você quer salvar a chave (.ssh/id_rsa), e então pede duas vezes uma senha (passphrase), que você pode deixar em branco se não quiser digitar uma senha ao usar a chave. No entanto, se você usar uma senha, certifique-se de adicionar a opção -o; ela salva a chave privada num formato que é mais resistente à quebra de senhas por força bruta do que o formato padrão. Você também pode usar a ferramenta ssh-agent para evitar ter de digitar a senha toda vez.

Agora, cada usuário que faz isso precisa enviar a sua chave pública para você ou para quem estiver administrando o servidor Git (presumindo que você esteja usando uma configuração de servidor SSH que requer chaves públicas). Tudo o que eles precisam fazer é copiar o conteúdo do arquivo .pub e enviá-lo por e-mail. As chaves públicas se parecem com algo assim:

$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU
GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3
Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA
t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En
mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx
NrRFi9wrf+M7Q== schacon@mylaptop.local

Para um tutorial mais detalhado sobre como criar uma chave SSH em vários sistemas operacionais, veja o guia do GitHub sobre chaves SSH em https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent.