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.
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.



