Configurar Autenticação por Chave Pública SSH no Linux

CompTIABeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como configurar e utilizar a autenticação por chave pública SSH para se conectar de forma segura a um servidor Linux remoto. Este método aumenta a segurança e a conveniência ao substituir os logins tradicionais baseados em senha por um par de chaves criptográficas. Você criará uma chave privada, que permanece em segredo na sua máquina local, e uma chave pública, que é colocada no servidor para autorizar o seu acesso.

O processo envolve três etapas principais. Primeiro, você usará o comando ssh-keygen para gerar um novo par de chaves RSA para um usuário de demonstração, adicionando uma camada extra de segurança com uma frase secreta (passphrase). Em seguida, você copiará a chave pública com segurança para o arquivo de chaves autorizadas do servidor remoto usando o utilitário ssh-copy-id. Por fim, você testará a configuração fazendo login no servidor via SSH, que agora usará seu par de chaves para autenticação em vez de uma senha.

Este é um Laboratório Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para concluir cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 97%. Ele recebeu uma taxa de avaliação positiva de 100% dos alunos.

Criar um Usuário de Demonstração e Gerar um Par de Chaves RSA

Nesta etapa, você primeiro criará uma conta de usuário dedicada para demonstrar a autenticação por chave pública SSH e, em seguida, gerará um par de chaves criptográficas RSA. Essa abordagem garante que tenhamos um ambiente limpo para a demonstração, sem afetar as configurações de usuários existentes.

Criar o Usuário de Demonstração

Primeiro, vamos criar um novo usuário chamado sshuser que será usado para nossa demonstração de SSH:

sudo adduser sshuser

Você será solicitado a definir uma senha e fornecer informações do usuário. Para este laboratório, use password123 como senha. Você pode pressionar Enter para pular os campos opcionais (Nome Completo, Número da Sala, etc.).

Adding user `sshuser' ...
Adding new group `sshuser' (1001) ...
Adding new user `sshuser' (1001) with group `sshuser' ...
Creating home directory `/home/sshuser' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for sshuser
Enter the new value, or press ENTER for the default
 Full Name []:
 Room Number []:
 Work Phone []:
 Home Phone []:
 Other []:
Is the information correct? [Y/n] Y

Gerar o Par de Chaves RSA

Agora, vamos alternar para a conta sshuser para gerar o par de chaves. Isso garante que as chaves sejam criadas no diretório home do usuário correto:

sudo su - sshuser

Agora você está operando como o sshuser. Gere um par de chaves RSA usando o comando ssh-keygen. A flag -t especifica o tipo de chave a ser criada, que neste caso é rsa.

ssh-keygen -t rsa

Após executar o comando, você será solicitado a escolher um local para salvar as chaves. O local padrão é ~/.ssh/id_rsa, que fica dentro de um diretório oculto chamado .ssh na pasta pessoal do usuário. Pressione Enter para aceitar este local padrão.

Generating public/private rsa key pair.
Enter file in which to save the key (/home/sshuser/.ssh/id_rsa):

Em seguida, será solicitado que você insira uma frase secreta (passphrase). Uma frase secreta adiciona uma camada extra de segurança à sua chave privada. Para este laboratório, vamos usar sshkey-password como frase secreta. Você precisará digitá-la duas vezes.

Nota: Ao digitar a frase secreta, você não verá nenhum caractere na tela. Este é um recurso de segurança padrão.

Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/sshuser/.ssh/id_rsa
Your public key has been saved in /home/sshuser/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:<FINGERPRINT_STRING> sshuser@ubuntu
The key's randomart image is:
+---[RSA 3072]----+
|      .. . .o..  |
|     .  . . o..  |
|      .  . = . . |
|       .  B o .  |
|        S= * .   |
|        o*B o .  |
|       .oO=B . . |
|      .o+*+oE. . |
|      .o*o=o.o.  |
+----[SHA256]-----+

Agora que as chaves foram geradas, você pode verificar se os arquivos foram criados corretamente. Use o comando ls -l para listar o conteúdo do diretório ~/.ssh:

ls -l ~/.ssh

Você deve ver uma saída semelhante à seguinte, mostrando seus novos arquivos de chave:

total 8
-rw------- 1 sshuser sshuser 2610 Jun 30 10:30 id_rsa
-rw-r--r-- 1 sshuser sshuser  575 Jun 30 10:30 id_rsa.pub

Observe as permissões dos arquivos. A chave privada id_rsa tem permissões de leitura/escrita apenas para o proprietário, enquanto a chave pública id_rsa.pub pode ser lida por outros. É fundamental proteger sua chave privada e nunca compartilhá-la.

Copiar a Chave Pública para o Servidor usando ssh-copy-id

Nesta etapa, você copiará a chave pública gerada na etapa anterior para o servidor SSH. Esta ação autoriza a chave, permitindo que você faça login usando a chave privada correspondente em vez de uma senha. O utilitário ssh-copy-id é um script que simplifica esse processo, instalando sua chave no local correto no servidor.

Para este laboratório, simularemos uma interação cliente-servidor em uma única máquina. A conta sshuser atuará tanto como o cliente quanto como a conta de destino para a conexão SSH.

Certifique-se de que ainda está operando com a conta sshuser. Se você retornou ao usuário labex, alterne novamente:

sudo su - sshuser

Agora você está pronto para copiar a chave pública. O comando ssh-copy-id recebe o usuário remoto e o host como argumento. Usaremos sshuser@localhost para especificar o usuário sshuser na máquina local (atuando como o servidor).

Execute o comando:

ssh-copy-id sshuser@localhost

Como esta é a primeira vez que você se conecta ao localhost via SSH, será solicitado que você verifique a autenticidade do host. Digite yes para continuar:

The authenticity of host 'localhost (::1)' can't be established.
ED25519 key fingerprint is SHA256:<FINGERPRINT_STRING>.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

O utilitário então procurará por sua chave id_rsa.pub e solicitará a senha da conta sshuser. Digite a senha password123 que você definiu ao criar o usuário.

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
sshuser@localhost's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'sshuser@localhost'"
and check to make sure that only the key(s) you wanted were added.

A saída confirma que uma chave foi adicionada com sucesso. O comando ssh-copy-id cria automaticamente o diretório ~/.ssh no servidor, caso ele não exista, e anexa sua chave pública ao arquivo ~/.ssh/authorized_keys.

Para confirmar isso, você pode visualizar o conteúdo do arquivo authorized_keys. Ele deve conter exatamente a mesma chave que o seu arquivo id_rsa.pub.

cat ~/.ssh/authorized_keys

A saída será uma longa sequência de caracteres, que é a sua chave pública.

ssh-rsa AAAA...[long key string]...== sshuser@ubuntu

Testar o Login SSH com Autenticação por Chave Pública

Nesta etapa final, você testará a nova configuração para garantir que a autenticação por chave pública esteja funcionando corretamente. Você tentará fazer login no servidor SSH usando o par de chaves que criou. Em vez de ser solicitada a senha do usuário, será solicitada a frase secreta que você definiu para sua chave privada.

Certifique-se de que ainda está operando com a conta sshuser:

whoami

Você deve ver sshuser como saída. Caso contrário, alterne para a conta sshuser:

sudo su - sshuser

Agora, vamos iniciar uma conexão SSH para localhost. Como você já se conectou uma vez durante o processo de cópia da chave, a chave do host já deve ter sido aceita.

Execute o seguinte comando para conectar:

ssh sshuser@localhost

Você será solicitado a inserir a frase secreta da sua chave privada. Esta é a frase secreta que você criou na Etapa 1 (sshkey-password).

Enter passphrase for key '/home/sshuser/.ssh/id_rsa':

Digite sua frase secreta, sshkey-password, e pressione Enter. Se você a digitou corretamente, estará logado no servidor e verá uma mensagem de boas-vindas.

Welcome to Ubuntu 22.04.x LTS (GNU/Linux x.x.x-xx-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

Last login: Mon Jun 30 10:45:23 2024 from ::1
sshuser@ubuntu:~$

Parabéns! Você fez login com sucesso usando a autenticação por chave pública. Você está agora em uma nova sessão SSH. Observe que não foi solicitada a senha da conta de usuário (password123), apenas a frase secreta da chave.

Para verificar se você está em uma nova sessão SSH, você pode verificar o ambiente:

echo $SSH_CONNECTION

Isso deve mostrar os detalhes da conexão, confirmando que você está em uma sessão SSH.

Para encerrar a sessão SSH e retornar ao seu terminal original, basta digitar exit e pressionar Enter.

exit

Você verá uma mensagem confirmando que a conexão foi encerrada.

logout
Connection to localhost closed.

Finalmente, você pode sair da conta sshuser para retornar ao usuário labex:

exit

Você configurou e testou com sucesso a autenticação por chave pública SSH usando um usuário de demonstração dedicado.

Resumo

Neste laboratório, você aprendeu como configurar e usar a autenticação por chave pública SSH para estabelecer uma conexão segura e sem senha com um servidor Linux remoto. Você começou criando um usuário de demonstração dedicado (sshuser) para garantir um ambiente limpo para a configuração da autenticação baseada em chaves. Em seguida, gerou um novo par de chaves RSA usando o comando ssh-keygen. Esse processo criou uma chave privada, que permanece segura e é protegida por uma frase secreta para uma camada extra de segurança, e uma chave pública correspondente.

Posteriormente, você utilizou o utilitário ssh-copy-id para transferir com segurança a chave pública para o arquivo de chaves autorizadas do servidor. Esse comando anexou automaticamente a chave ao arquivo ~/.ssh/authorized_keys, autorizando o par de chaves para acesso. A etapa final envolveu o teste da conexão ao iniciar uma sessão SSH para o servidor, que foi autenticada com sucesso usando a frase secreta da chave privada em vez da senha da conta do usuário, confirmando que a autenticação por chave pública estava funcionando corretamente.