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!