Priorize a segurança cibernética utilizando chaves SSH para acessos remotos. Elas oferecem uma maneira mais segura de conexão do que as senhas. Abaixo, explicamos como gerar, instalar e utilizar chaves SSH no Linux.
A fragilidade das senhas
O Secure Shell (SSH) é um protocolo de criptografia usado para entrar em contas de usuário em computadores Linux ou Unix remotamente. Normalmente, essas contas são protegidas por senhas. Ao acessar um computador remoto, é necessário fornecer o nome de usuário e a senha da conta desejada.
Senhas são o método mais comum de proteger o acesso a recursos computacionais. No entanto, a segurança baseada em senhas possui falhas. Usuários frequentemente escolhem senhas fracas, compartilham senhas, reutilizam a mesma senha em diferentes sistemas, entre outros.
As chaves SSH, por sua vez, são consideravelmente mais seguras e, após configuradas, tão fáceis de usar quanto senhas.
O que garante a segurança das chaves SSH?
As chaves SSH são criadas e utilizadas em pares, com ambas as chaves interligadas e criptograficamente seguras. Uma delas é a chave pública, e a outra, a chave privada. Elas são vinculadas à sua conta de usuário. Se vários usuários em um mesmo computador utilizarem chaves SSH, cada um terá seu próprio par de chaves.
Sua chave privada é armazenada em sua pasta pessoal (geralmente), enquanto a chave pública é instalada no computador remoto – ou nos computadores – que você pretende acessar.
É crucial manter sua chave privada em segurança. Se outras pessoas tiverem acesso a ela, a sua segurança ficará tão comprometida quanto se tivessem descoberto sua senha. Uma medida prudente – e altamente recomendada – é criptografar sua chave privada com uma frase-senha forte.
A chave pública pode ser compartilhada livremente sem comprometer a segurança. É impossível determinar a chave privada a partir de um exame da chave pública. A chave privada pode criptografar mensagens que somente a chave privada correspondente pode descriptografar.
Quando você solicita uma conexão, o computador remoto utiliza sua cópia da chave pública para criar uma mensagem criptografada, contendo um ID de sessão e outros metadados. Apenas o computador que possui a chave privada – seu computador – pode descriptografar essa mensagem.
Seu computador acessa sua chave privada, descriptografa a mensagem e envia de volta ao computador remoto uma nova mensagem criptografada, que contém, entre outras informações, o ID da sessão recebido anteriormente.
O computador remoto, ao verificar que somente sua chave privada poderia extrair o ID da sessão da mensagem, certifica que você é quem afirma ser.
Verificando o acesso ao computador remoto
Certifique-se de que você consegue se conectar remotamente ao computador desejado. Isso comprova que sua conta de usuário possui credenciais válidas configuradas e que o acesso via senha funciona.
Não tente configurar chaves SSH antes de verificar que consegue usar o SSH com senhas para conectar ao computador de destino.
Neste exemplo, o usuário ‘dave’, conectado ao computador ‘wdzwdz’, deseja se conectar ao computador ‘Sulaco’.
Ele utiliza o seguinte comando:
ssh [email protected]
Ao inserir a senha quando solicitado, ele é conectado ao ‘Sulaco’, e o prompt de comando é atualizado para confirmar a conexão.
Esta confirmação é suficiente. O usuário ‘dave’ pode agora se desconectar do ‘Sulaco’ com o comando:
exit
A mensagem de desconexão é exibida, e o prompt de comando retorna para o computador original, ‘[email protected]’.
Criando um par de chaves SSH
Essas instruções foram testadas nas distribuições Ubuntu, Fedora e Manjaro do Linux. O processo foi idêntico em todos os casos, sem a necessidade de instalar nenhum software adicional nas máquinas de teste.
Para gerar as chaves SSH, use o comando:
ssh-keygen
O processo de geração será iniciado. Você será questionado sobre onde deseja armazenar as chaves SSH. Pressione Enter para aceitar o local padrão, pois as permissões da pasta garantirão que apenas você possa acessá-las.
Em seguida, será solicitada uma frase-senha. É altamente recomendável usar uma frase-senha forte e memorizá-la. Embora seja possível pressionar Enter para não utilizar uma frase-senha, essa não é uma boa prática. Uma frase-senha composta por três ou quatro palavras não relacionadas, mas unidas, fornecerá uma segurança muito robusta.
Será solicitado que você insira a mesma frase-senha mais uma vez para confirmar que a digitou corretamente.
As chaves SSH serão geradas e armazenadas.
Você pode ignorar o “randomart” exibido. Alguns computadores remotos podem mostrar este “randomart” sempre que você se conectar. O objetivo é que você reconheça se o “randomart” mudar, o que indicaria que as chaves SSH do servidor remoto foram alteradas, sinalizando uma possível conexão suspeita.
Instalando a chave pública
É necessário instalar a sua chave pública no computador ‘Sulaco’ para que ele reconheça que a chave pública pertence a você.
Isso é feito usando o comando `ssh-copy-id`, que se conecta ao computador remoto de forma similar ao comando `ssh`, mas, em vez de permitir o login, transfere a chave SSH pública.
ssh-copy-id [email protected]
Apesar de não estar realizando um login no computador remoto, você ainda precisa se autenticar usando uma senha. O computador remoto precisa identificar a qual conta de usuário a nova chave SSH pertence.
A senha solicitada aqui é a senha da conta de usuário que está sendo acessada, e não a frase-senha que você acabou de criar.
Após a verificação da senha, o comando `ssh-copy-id` transfere sua chave pública para o computador remoto.
Você retornará ao prompt de comando do seu computador, sem permanecer conectado ao computador remoto.
Conectando-se usando chaves SSH
Vamos testar a conexão com o computador remoto.
ssh [email protected]
Como o processo de conexão exigirá acesso à sua chave privada, e como você protegeu essa chave com uma frase-senha, será necessário fornecê-la para que a conexão possa prosseguir.
Insira sua frase-senha e clique no botão “Desbloquear”.
Após inserir sua frase-senha em uma sessão de terminal, não será necessário inseri-la novamente enquanto a janela do terminal estiver aberta. Você pode se conectar e desconectar de quantas sessões remotas desejar, sem a necessidade de digitar sua frase-senha novamente.
É possível marcar a opção “Desbloquear esta chave automaticamente sempre que estiver conectado”, porém, isso reduzirá sua segurança. Caso você deixe seu computador sem supervisão, qualquer pessoa poderá se conectar aos computadores remotos que possuam sua chave pública.
Após inserir sua frase-senha, você será conectado ao computador remoto.
Para verificar o processo de ponta a ponta, desconecte-se com o comando `exit` e reconecte-se ao computador remoto na mesma janela de terminal.
ssh [email protected]
Você será conectado ao computador remoto sem a necessidade de senha ou frase-senha.
Sem senhas, com segurança reforçada
Especialistas em segurança cibernética mencionam o “atrito de segurança”, o pequeno esforço que você precisa realizar para obter um ganho adicional em segurança. Em geral, há uma ou duas etapas extras necessárias para adotar um método de trabalho mais seguro, o que muitas pessoas não apreciam. A maioria prefere menos segurança e a ausência de atrito, o que é compreensível.
Com as chaves SSH, você obtém mais segurança e mais conveniência, o que representa um ganho em todos os sentidos.