Gerenciando múltiplas chaves SSH no Linux

    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!

    O autor

    Equipe Locaweb

    Viramos referência quando o assunto é internet, porque somos motivados pelo que fazemos: desenvolver. Nossa riqueza humana, cerca de mil funcionários, engrandece nosso portfólio de serviços de internet. Existimos para facilitar o desenvolvimento de pequenos e médios empreendedores que buscam o sucesso de seus negócios por meio desses serviços.

    Mais de Equipe Locaweb