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:
- 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. - 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:
- Abra o Prompt de Comando ou o PowerShell.
- Execute o comando:
ssh-keygen -t ed25519 -C "[email protected]"
- Escolha o local onde deseja salvar a chave (por padrão, será em
C:\Users\SeuUsuario\.ssh\id_ed25519
). - 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 emIdentityFile
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:
- Ed25519: high-speed high-security signatures” de Daniel J. Bernstein, criador do algoritmo
- Using Ed25519 for OpenSSH keys (instead of DSA/RSA/ECDSA)
- Outros artigos do Bureau IT relacionado com shell script