Chaves SSH para servidores em nuvem
As chaves SSH (Secure Shell) são uma parte essencial do gerenciamento seguro de servidores em nuvem. Elas oferecem um método mais seguro e conveniente para autenticar usuários em comparação com os logins tradicionais baseados em senha. Com o uso de chaves SSH, é possível estabelecer conexões seguras e criptografadas com os servidores em nuvem, garantindo que somente usuários autorizados possam ter acesso. Neste artigo, exploraremos o que são chaves SSH, como elas funcionam e como configurá-las em seu servidor em nuvem.
1. O que são chaves SSH?
As chaves SSH são chaves criptográficas usadas para autenticar clientes em um servidor SSH. Em vez de usar uma combinação de nome de usuário e senha, que pode ser vulnerável a ataques de força bruta, as chaves SSH oferecem uma maneira mais segura e automatizada de fazer login em servidores remotos. Os pares de chaves SSH consistem em duas partes:
- Chave privada: É mantida em segurança em seu computador local e nunca deve ser compartilhada.
- Chave pública: É colocada no servidor remoto. O servidor usa a chave pública para autenticar os usuários com base em sua chave privada.
Ao se conectar a um servidor em nuvem, o protocolo SSH verifica se a chave pública no servidor corresponde à chave privada armazenada em seu computador. Se a correspondência for verificada, a conexão será estabelecida sem a necessidade de uma senha.
2. Por que usar chaves SSH para servidores em nuvem?
As chaves SSH oferecem várias vantagens em relação à autenticação tradicional baseada em senha:
- Segurança aprimorada: As chaves SSH são muito mais difíceis de serem descobertas do que as senhas, pois usam algoritmos criptográficos para autenticação. Além disso, as chaves SSH não são vulneráveis a ataques de força bruta ou de phishing, como as senhas.
- Conveniência: Depois de configuradas, as chaves SSH permitem a autenticação sem senha, facilitando o login sem a necessidade de inserir credenciais todas as vezes.
- Automação: Muitos processos e scripts automatizados dependem da autenticação baseada em chaves SSH, o que torna o gerenciamento de servidores e implementações em nuvem mais eficiente.
- Controle de acesso: As chaves SSH podem ser distribuídas somente para usuários autorizados, permitindo que você controle quem pode acessar seus servidores em nuvem.
3. Como funciona a autenticação de chaves SSH
Esta é uma versão simplificada de como funciona a autenticação de chave SSH:
- O cliente (seu computador local) envia uma solicitação para se conectar ao servidor.
- O servidor verifica se a chave pública do cliente corresponde a alguma das chaves armazenadas no arquivo ~/.ssh/authorized_keys.
- Se for encontrada uma correspondência, o servidor enviará um desafio (geralmente dados criptografados) para o cliente.
- O cliente usa sua chave privada para descriptografar o desafio e enviar uma resposta ao servidor.
- O servidor verifica a resposta e, se estiver correta, permite o acesso ao cliente sem uma senha.
4. Como gerar chaves SSH
Para usar a autenticação por chave SSH, primeiro você precisa gerar um par de chaves. Veja a seguir como fazer isso:
No Linux ou macOS:
- Abra seu terminal.
- Execute o seguinte comando para gerar um novo par de chaves SSH:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Veja a seguir o que cada opção significa:
- -t rsa: Especifica o algoritmo RSA.
- -b 4096: Gera uma chave de 4096 bits para aumentar a segurança.
- -C “your_email@example.com”: Adiciona um comentário para ajudar a identificar a chave.
- Você será solicitado a escolher um local para salvar a chave. Por padrão, ela é armazenada no diretório ~/.ssh/. Pressione Enter para aceitar o local padrão.
- Você também pode definir uma frase secreta para aumentar a segurança, embora isso seja opcional. Se não quiser usar uma frase secreta, pressione Enter para deixá-la em branco.
No Windows:
Se estiver usando o Windows, você pode usar um cliente SSH como o PuTTYgen ou o recurso OpenSSH integrado no Windows 10 e posterior:
- Abra o PowerShell ou o prompt de comando.
- Execute o mesmo comando acima para gerar o par de chaves:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Depois de executar o comando, o processo é o mesmo que no Linux ou no macOS.
5. Como adicionar sua chave SSH ao servidor em nuvem
Depois de gerar o par de chaves SSH, você precisa copiar a chave pública para o servidor de nuvem para ativar a autenticação baseada em chave.
Método 1: usando ssh-copy-id
No Linux ou macOS, você pode usar o comando ssh-copy-id para transferir a chave pública para o seu servidor:
ssh-copy-id user@your-server-ip
Esse comando solicitará que você digite a senha do servidor. Depois que a senha for inserida, ele copiará a chave pública para o arquivo ~/.ssh/authorized_keys no servidor.
Método 2: Método manual
Se você estiver no Windows ou preferir etapas manuais, poderá copiar a chave pública manualmente:
- Abra o arquivo de chave pública usando um editor de texto:
cat ~/.ssh/id_rsa.pub
- Copie todo o conteúdo do arquivo.
- Conecte-se ao seu servidor usando uma sessão SSH baseada em senha:
ssh user@seu-servidor-ip
- No servidor, crie o diretório ~/.ssh se ele não existir:
mkdir -p ~/.ssh
- Abra o arquivo authorized_keys:
nano ~/.ssh/authorized_keys
- Cole a chave pública copiada no arquivo e salve-o.
- Defina as permissões corretas:
chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
Isso garante que somente o usuário tenha acesso de leitura e gravação à chave e ao diretório.
6. Desativar a autenticação por senha (opcional, mas recomendado)
Depois que as chaves SSH estiverem configuradas e funcionando, é altamente recomendável desativar a autenticação por senha no servidor para evitar o acesso não autorizado. Veja como fazer isso:
- Abra o arquivo de configuração do SSH em seu servidor de nuvem:
sudo nano /etc/ssh/sshd_config
- Localize a seguinte linha e altere-a para no:
PasswordAuthentication no
- Salve o arquivo e reinicie o serviço SSH:
sudo systemctl restart sshd
Agora, somente os usuários com uma chave SSH válida poderão fazer login.
7. Gerenciamento de chaves SSH
- Adição de várias chaves: Se vários usuários precisarem acessar o servidor, você poderá adicionar suas chaves públicas ao arquivo authorized_keys.
- Remoção de chaves: Se quiser revogar o acesso de um usuário específico, basta remover sua chave pública do arquivo authorized_keys.
8. Conclusão
O uso de chaves SSH para acesso ao servidor em nuvem é uma das melhores maneiras de proteger seu servidor e evitar as vulnerabilidades associadas à autenticação baseada em senha. Seguindo as etapas descritas neste artigo, você pode gerar chaves SSH, adicioná-las ao seu servidor em nuvem e até mesmo desativar os logins com senha para aumentar a segurança.
A configuração de chaves SSH pode exigir um pouco mais de esforço inicialmente, mas a segurança e a conveniência de longo prazo que elas proporcionam fazem com que o esforço valha a pena.