Criando Chave SSH Para Acesso ao Github

A chave SSH é uma forma facilitada de conseguir acesso em um servidor/serviço, onde você não precisará digitar a senha, mas sim apresentar a chave. Trabalhamos com dois tipos de chaves, a Pública, nosso cartão de visita, que deixamos nos serviços/servidores onde queremos acesso e a Privada, nossa identidade, na qual guardamos com a gente para provarmos que somos quem o “cartão de visita” diz nós sermos.

Objetivo

Criar uma chave SSH para ser possível clonar um projeto do Github.

Criptografia

Por padrão as chaves RSA são criadas com criptografia de 2048 bits, logo iremos utilizar uma criptografia mais segura de 4096. Por padrão o nome da chave será id_rsa, porém podemos trocar esse nome usando a opção -f para indicar o caminho do arquivo. Além disso podemos adicionar um comentário que será adicionado no final da chave, utilizando a opção -C:

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -C [email protected]

Então será gerada a chave privada ~/.ssh/id_rsa e a pública ~/.ssh/id_rsa.pub.

Permissões

As chaves, assim como o diretório ~/.ssh devem estar com as devidas permissões configuradas:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/*

SSH Agent

O SSH Agent é um programa encarregado de guardas as nossas chaves privadas. Se ele não obtiver a chave consigo, mesmo que ela tenha sido gerada e esteja no diretório ~/.ssh, poderá não ser reconhecida. Para verificar as chaves carregadas execute:

ssh-add -l # -L também mostra o conteúdo.

Se a chave que criamos não estiver carregada, teremos que adicioná-la:

ssh-add ~/.ssh/id_rsa # o comando `ssh-add` por padrão adiciona `id_rsa`.

Problemas

Could not open a connection to your authentication agent.

Neste caso é necessário iniciar o agente:

eval `ssh-agent`

Se preferir, adicione esse comando ao seu ~/.bashrc ou ~/.bash_profile para que o mesmo sempre seja inicializado.

Chave Pública (Cartão de Visita)

Agora precisamos de deixar a chave pública no serviço que desejamos acesso, no caso o http://github.com. Copie o conteúdo da chave pública:

cat ~/.ssh/id_rsa.pub

Acesse o seu projeto e vá no menu Settings:

Então acesse o menu Deploy keys, clique no botão Add deploy key, escreva um título para a chave no campo Title, cole o conteúdo da chave no campo Key e clique em Add key.

Testando

Vá na máquina onde se encontra a chave privada e execute o comando:

git ls-remote [email protected]:wbotelhos/blog

Se tudo estiver correto, serão listadas os SHA das suas branchs:

cf0f5e487df1c8acaf21f58c5fdbfa0826f5f950	 HEAD
cf0f5e487df1c8acaf21f58c5fdbfa0826f5f950	 refs/heads/master

Tente sempre identificar suas chaves como aplicacao@dominio, e usar a mesma identificação nos serviços onde serão salvas. No caso [email protected] me diz que essa chave é usada pelo Jenkins no servidor blog.com.

Aqui tem uns scripts para lhe ajudar nessas tarefas: http://github.com/wbotelhos/installers/tree/master/ssh_key