Guia Completo: Como Gerar e Configurar Chaves SSH Públicas no macOS, Linux e Windows

O artigo explica como gerar e configurar chaves SSH públicas no macOS, Linux e Windows, incluindo o uso do comando `ssh-keygen` e do arquivo `~/.ssh/config` para facilitar conexões e gerenciar múltiplos servidores. Destinado a profissionais de TI, destaca práticas de segurança para proteger a chave privada e otimizar o acesso seguro a servidores remotos.
Teclado de computador com teclas de cadeado e chave em destaque, simbolizando segurança digital

A chave pública é um componente fundamental na criptografia assimétrica, também conhecida como criptografia de chave pública. Nesse sistema, cada usuário possui um par de chaves: uma chave pública, que pode ser compartilhada livremente, e uma chave privada, que deve ser mantida em segredo. A chave pública é utilizada para criptografar mensagens ou verificar assinaturas digitais, enquanto a chave privada é usada para descriptografar mensagens ou criar assinaturas digitais.

Por exemplo, ao enviar uma mensagem confidencial, o remetente utiliza a chave pública do destinatário para criptografá-la. Apenas o destinatário, com sua chave privada correspondente, poderá descriptografar e acessar o conteúdo da mensagem.

A criptografia de chave pública é amplamente empregada em diversas aplicações, como certificados digitais, protocolos de segurança na internet (SSL/TLS) e assinaturas digitais, garantindo a segurança e a integridade das informações transmitidas eletronicamente.

Aqui no Bureau de Tecnologia utilizamos chaves principalmente para acessar servidores remotos utilizando o shell em conexões SSH. A seguir, as instruções para gerar uma chave SSH pública em cada sistema operacional e depois como facilitar seu uso no dia-a-dia para conexão em servidores remotos via shell:

Como gerar o par de chaves SSH (e gerar a chave pública)

MacOS e Linux

Abra o terminal e execute o seguinte comando para gerar um par de chaves:

ssh-keygen -t ed25519 -C "[email protected]"

Explicação dos parâmetros:

  • -t ed25519: Especifica o tipo de chave a ser gerada.
  • -C "[email protected]": Adiciona um comentário (normalmente seu e-mail) à chave.

Após o comando:

  1. Você será solicitado a definir um nome para o arquivo da chave. Pressione Enter para usar o nome padrão (~/.ssh/id_ed25519) ou digite um novo caminho/nome da sua preferência.
  2. Em seguida, será solicitado a definir uma senha para proteger a chave. É recomendável adicionar uma senha para segurança extra.

Sua chave pública será salva como ~/.ssh/id_ed25519.pub.

Para visualizar a chave pública gerada, você pode usar:

cat ~/.ssh/id_ed25519.pub

Windows (com OpenSSH)

No Windows 10 e versões superiores, o OpenSSH está embutido. Para gerar a chave SSH, siga os passos:

  1. Abra o Prompt de Comando ou o PowerShell.
  2. Execute o comando:
ssh-keygen -t ed25519 -C "[email protected]"
  1. Escolha o local onde deseja salvar a chave (por padrão, será em C:\Users\SeuUsuario\.ssh\id_ed25519).
  2. Defina uma senha para proteger a chave (opcional, mas recomendado).

Para exibir a chave pública gerada, execute:

type $HOME\.ssh\id_ed25519.pub

Compartilhamento de chave pública

Após gerar a chave pública, copie seu conteúdo e cole onde for necessário para configurar o acesso SSH:

  • Linux/macOS: cat ~/.ssh/id_ed25519.pub
  • Windows: type $HOME\.ssh\id_ed25519.pub

Atenção! A chave privada deve ser mantida em local seguro, pois qualquer comprometimento dessa chave permite que terceiros acessem sistemas protegidos sem autenticação adicional. Em contraste, a chave pública pode ser compartilhada livremente sem consequências negativas.

Otimizando o acesso às chaves para uso cotidiano

Recomendo configurar o arquivo de conexões pré-definidas em ~/.ssh/config. Este arquivo permite simplificar e personalizar conexões SSH, especialmente úteis ao gerenciar múltiplos servidores ou configurações específicas.

O que é o arquivo ~/.ssh/config?

O arquivo ~/.ssh/config permite definir configurações específicas para hosts SSH, facilitando o gerenciamento de conexões. Com ele, é possível atribuir apelidos a servidores, especificar portas, usuários padrão e outras opções de conexão.

Benefícios de utilizar o arquivo de configuração SSH

  • Simplificação de comandos: Evita a necessidade de digitar parâmetros extensos ao conectar-se a servidores.
  • Gerenciamento centralizado: Concentra configurações de múltiplos hosts em um único local.
  • Aumento de segurança: Permite especificar métodos de autenticação e outras opções de segurança por host.

Como configurar o arquivo ~/.ssh/config

Siga os passos abaixo para criar e configurar o arquivo de configuração SSH:

  • Criar o arquivo de configuração: Se o arquivo não existir, crie-o com o comando:
  touch ~/.ssh/config
  • Definir permissões adequadas: Assegure-se de que apenas o proprietário tenha permissão de leitura e escrita:
  chmod 600 ~/.ssh/config
  • Adicionar configurações para um host: Abra o arquivo com um editor de texto e adicione as configurações desejadas. Por exemplo:
  Host meu-servidor
      HostName 192.168.1.100
      User usuario
      Port 2222
      IdentitiesOnly=yes
      IdentityFile ~/.ssh/id_ed25519

Explicação dos parâmetros:

  • Host: Apelido para o servidor.
  • HostName: Endereço IP ou domínio do servidor.
  • User: Nome de usuário para a conexão.
  • Port: Porta SSH utilizada pelo servidor.
  • IdentitiesOnly=yes: utiliza exclusivamente a chave especificada em IdentityFile
  • IdentityFile: Caminho para a chave privada correspondente.

Utilizando o arquivo de configuração

Após configurar o arquivo, conecte-se ao servidor utilizando o apelido definido:

ssh meu-servidor

O SSH aplicará automaticamente as configurações especificadas para meu-servidor.

Exemplo prático

Suponha que você gerencie dois servidores com diferentes configurações. O arquivo ~/.ssh/config poderia ser configurado da seguinte forma:

Host servidor-web
    HostName web.bureau-it.com
    User admin
    Port 22
    IdentitiesOnly=yes
    IdentityFile ~/.ssh/id_ed25519_web

Host servidor-banco
    HostName db.bureau-it.com
    User dbadmin
    Port 2222
    IdentitiesOnly=yes
    IdentityFile ~/.ssh/id_ed25519_banco

Com essa configuração, você pode conectar-se aos servidores utilizando apenas:

ssh servidor-web

ou

ssh servidor-banco

6. Considerações de segurança

  • Proteção do arquivo de configuração: Mantenha o arquivo ~/.ssh/config com permissões restritas para evitar acesso não autorizado.
  • Gerenciamento de chaves privadas: Armazene as chaves privadas em locais seguros e utilize senhas fortes para protegê-las.

Implementando o uso do arquivo ~/.ssh/config, você simplifica o gerenciamento de conexões SSH e melhora a eficiência ao acessar múltiplos servidores.

Para mais detalhes sobre o uso do arquivo de configuração SSH, consulte a documentação oficial do OpenSSH. As documentações de softwares fundamentais para SysAdmins são áridas, mas indispensáveis e fontes primárias de todos os bons artigos. 🙂

Até a próxima!

Leia também:

Sobre o autor

bureau-it.com