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