Quem trabalha com desenvolvimento web provavelmente já deve ter ficado louco em algum momento com tantas chaves SSH para gerenciar. É chave para Github, chave para servidor de teste, chave para servidor de produção… O SSH config é uma mão na roda nessas horas.

Alias

Quando eu comecei a trabalhar com SSH, tinha apenas duas chaves para gerenciar eeu simplesmente chamava assim:

[sourcecode language=”bash”]
$ ssh -i ~/.ssh/chave_privada usuario@servidor
[/sourcecode]

O problema com esse comando é que são muitas coisas pra digitar e é muito fácil de esquecê-las. Foi então que alguém me falou: “- Ei! Usa um Alias no Shell e para de sofrer…”. Como faz isso? Você precisa abrir seu .bashrc e adicionar o seguinte:

[sourcecode language=”bash”]
alias ssh_server1=’ssh -i ~/.ssh/chave_privada usuario@servidor’
[/sourcecode]

Agora, sempre que eu quiser acessar o servidor em questão, abro o meu terminal e digito

[sourcecode language=”bash”]
$ ssh_server1
[/sourcecode]

Config file

Eu costumo ser bem chato com organização. Hoje tenho cerca de cinco chaves para gerenciar e utilizar Alias para todas não parecia ser o mais legal. Na verdade, estava bem feio. Foi aí que descobri que o próprio open-ssh disponibiliza um arquivo de configuração para gerenciar as chaves.

Veja como é fácil converter o exemplo anterior para o arquivo de configurações:

  • O primeiro passo é acessar o diretório ~/.ssh e criar o arquivo config:

[sourcecode language=”bash”]
$ cd ~/.ssh
$ touch config
[/sourcecode]

  • Agora você deve definir os parâmetros de sua conexão ssh:

[sourcecode language=”bash”]
Host server1
User usuario
HostName server1.com
IdentityFile ~/.ssh/chave_privada_do_server1
[/sourcecode]

Agora, para acessar o server1 por ssh, rode o comando:

[sourcecode language=”bash”]
$ ssh server1
[/sourcecode]

Simples assim!

Você também pode gerenciar as chaves utilizadas em repositórios GIT. Digamos que o seu repositório esteja hospedado sob o endereço repositorios.com. Então, ao invés de utilizar o ssh-agent para configurar a chave privada a ser utilizada, você pode criar uma nova entrada no arquivo de configuração ~/.ssh/config

[sourcecode language=”bash”]
Host repos
HostName repositorios.com
IdentityFile ~/.ssh/chave_privada_do_repositório
IdentitiesOnly yes
[/sourcecode]

e utilizar o seguinte comando para clonar o repositório

[sourcecode language=”bash”]
$ git clone git@repos:seu_repositorio.git
[/sourcecode]

O IdentitiesOnly yes serve para dar prioridade à chave privada definida em IdentityFile. Sem essa opção, a primeira tentativa de chave a ser utilizada seria a chave id_rsa

Essa dica é bem simples e vai ajudar bastante na organização de suas chaves. Outras dicas podem ser encontradas na documentação oficial do open-ssh, ou aqui no blog em um próximo post!

Até a próxima!