Como Configurar Chaves SSH no Rocky Linux 9

Introdução

O SSH, ou shell seguro, é um protocolo criptografado usado para administrar e comunicar com servidores. Ao trabalhar com um servidor Rocky Linux, é provável que você passe a maior parte do tempo em uma sessão de terminal conectada ao seu servidor através do SSH.

Neste guia, vamos nos concentrar em configurar chaves SSH para um servidor Rocky Linux 9. As chaves SSH fornecem um método simples e seguro para fazer login no seu servidor e são recomendadas para todos os usuários.

Passo 1 — Criando o Par de Chaves RSA

O primeiro passo é criar um par de chaves na máquina cliente (geralmente o seu computador local):

  1. ssh-keygen

Por padrão, o ssh-keygen irá criar um par de chaves RSA de 2048 bits, que é seguro o suficiente para a maioria dos casos de uso (opcionalmente, você pode passar a flag -b 4096 para criar uma chave maior de 4096 bits).

Após inserir o comando, você deverá ver o seguinte prompt:

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

Pressione ENTER para salvar o par de chaves no subdiretório .ssh/ em seu diretório pessoal, ou especifique um caminho alternativo.

Se você já gerou um par de chaves SSH anteriormente, pode ver o seguinte prompt:

Output
/home/your_home/.ssh/id_rsa already exists. Overwrite (y/n)?

Se você optar por sobrescrever a chave no disco, você não poderá mais autenticar usando a chave anterior. Seja muito cuidadoso ao selecionar sim, pois este é um processo destrutivo que não pode ser revertido.

Em seguida, você deverá ver o seguinte prompt:

Output
Enter passphrase (empty for no passphrase):

Aqui você pode opcionalmente inserir uma frase secreta segura, o que é altamente recomendado. Uma frase secreta adiciona uma camada adicional de segurança à sua chave, para evitar que usuários não autorizados façam login.

Em seguida, você deverá ver a seguinte saída:

Output
Your identification has been saved in /your_home/.ssh/id_rsa. Your public key has been saved in /your_home/.ssh/id_rsa.pub. The key fingerprint is: a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host The key's randomart image is: +--[ RSA 2048]----+ | ..o | | E o= . | | o. o | | .. | | ..S | | o o. | | =o.+. | |. =++.. | |o=++. | +-----------------+

Agora você tem uma chave pública e privada que pode usar para autenticar. O próximo passo é obter a chave pública em seu servidor para que você possa usar a autenticação baseada em chave SSH para fazer login.

Passo 2 — Copiando a Chave Pública para o Seu Servidor Rocky Linux

A maneira mais rápida de copiar sua chave pública para o host do Rocky Linux é usar um utilitário chamado ssh-copy-id. Este método é altamente recomendado se estiver disponível. Se você não tiver ssh-copy-id disponível em sua máquina cliente, pode usar um dos dois métodos alternativos a seguir (copiando via SSH baseado em senha, ou copiando manualmente a chave).

Copiando Sua Chave Pública Usando ssh-copy-id

A ferramenta ssh-copy-id está incluída por padrão em muitos sistemas operacionais, então você pode tê-la disponível em seu sistema local. Para que este método funcione, você deve ter acesso SSH baseado em senha ao seu servidor.

Para usar a utilidade, você só precisa especificar o host remoto ao qual deseja se conectar e a conta de usuário à qual você tem acesso SSH baseado em senha. Esta é a conta para a qual sua chave pública SSH será copiada:

  1. ssh-copy-id username@remote_host

Você pode ver a seguinte mensagem:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

Isso significa que seu computador local não reconhece o host remoto. Isso acontecerá na primeira vez que você se conectar a um novo host. Digite yes e pressione ENTER para continuar.

Em seguida, a utilidade irá verificar sua conta local pela chave id_rsa.pub que criamos anteriormente. Quando encontrar a chave, solicitará a senha da conta de usuário remota:

Output
/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 username@203.0.113.1's password:

Digite a senha (sua digitação não será exibida por razões de segurança) e pressione ENTER. A utilidade se conectará à conta no host remoto usando a senha fornecida. Em seguida, copiará o conteúdo de sua chave ~/.ssh/id_rsa.pub para o arquivo ~/.ssh/authorized_keys da conta remota.

Você deve ver a seguinte saída:

Output
Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'username@203.0.113.1'" and check to make sure that only the key(s) you wanted were added.

Neste ponto, a sua chave id_rsa.pub foi enviada para a conta remota. Você pode prosseguir para o Passo 3.

Copiando a Chave Pública Usando SSH

Se você não tem o comando ssh-copy-id disponível, mas tem acesso SSH baseado em senha a uma conta no seu servidor, você pode enviar suas chaves usando um método SSH mais convencional.

Podemos fazer isso usando o comando cat para ler o conteúdo da chave pública SSH no nosso computador local e enviando isso através de uma conexão SSH para o servidor remoto.

Do outro lado, podemos garantir que o diretório ~/.ssh exista e tenha as permissões corretas na conta que estamos utilizando.

Podemos então enviar o conteúdo que pipemos para um arquivo chamado authorized_keys dentro deste diretório. Vamos usar o símbolo de redirecionamento >> para acrescentar o conteúdo sem sobrescrever. Isso nos permite adicionar chaves sem destruir as chaves adicionadas anteriormente.

O comando completo se parece com isso:

  1. cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Você pode ver a seguinte mensagem:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

Isso significa que o seu computador local não reconhece o host remoto. Isso acontecerá na primeira vez que você se conectar a um novo host. Digite yes e pressione ENTER para continuar.

Posteriormente, você deve ser solicitado a inserir a senha da conta de usuário remota:

Output
username@203.0.113.1's password:

Após inserir sua senha, o conteúdo da sua chave id_rsa.pub será copiado para o final do arquivo authorized_keys da conta de usuário remoto. Continue para Passo 3 se isso for bem-sucedido.

Copiando Chave Pública Manualmente

Se você não tiver acesso SSH baseado em senha disponível para seu servidor, será necessário concluir o processo acima manualmente.

Nós iremos anexar manualmente o conteúdo do seu arquivo id_rsa.pub ao arquivo ~/.ssh/authorized_keys em sua máquina remota.

Para exibir o conteúdo da sua chave id_rsa.pub, digite isso em seu computador local:

  1. cat ~/.ssh/id_rsa.pub

Você verá o conteúdo da chave, que deve se parecer com isso:

Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== sammy@host

Acesse seu host remoto usando o método disponível.

Depois de ter acesso à sua conta no servidor remoto, certifique-se de que o diretório ~/.ssh exista. Este comando irá criar o diretório, se necessário, ou não fará nada se ele já existir:

  1. mkdir -p ~/.ssh

Agora, você pode criar ou modificar o arquivo authorized_keys dentro deste diretório. Você pode adicionar o conteúdo do seu arquivo id_rsa.pub ao final do arquivo authorized_keys, criando-o se necessário, usando este comando:

  1. echo public_key_string >> ~/.ssh/authorized_keys

No comando acima, substitua o public_key_string pela saída do comando cat ~/.ssh/id_rsa.pub que você executou no seu sistema local. Deve começar com ssh-rsa AAAA....

Por fim, vamos garantir que o diretório ~/.ssh e o arquivo authorized_keys tenham as permissões apropriadas definidas:

  1. chmod -R go= ~/.ssh

Isso remove recursivamente todas as permissões de “grupo” e “outros” para o diretório ~/.ssh/.

Se você está usando a conta root para configurar chaves para uma conta de usuário, também é importante que o diretório ~/.ssh pertença ao usuário e não ao root:

  1. chown -R sammy:sammy ~/.ssh

Neste tutorial, nosso usuário é chamado de sammy, mas você deve substituir o nome de usuário apropriado no comando acima.

Agora podemos tentar a autenticação baseada em chaves com nosso servidor Rocky Linux.

Passo 3 — Acessando o Seu Servidor Rocky Linux Usando Chaves SSH

Se você concluiu com sucesso um dos procedimentos acima, agora deve conseguir fazer login no host remoto sem a senha da conta remota.

O processo inicial é o mesmo que com autenticação baseada em senha:

  1. ssh username@remote_host

Se esta for a primeira vez que você se conecta a este host (se usou o último método acima), pode ver algo assim:

Output
The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes

Isso significa que seu computador local não reconhece o host remoto. Digite sim e pressione ENTER para continuar.

Se você não forneceu uma frase secreta ao criar seu par de chaves no passo 1, será logado imediatamente. Se forneceu uma frase secreta, será solicitado a inseri-la agora. Após autenticar, uma nova sessão de shell deve abrir para você com a conta configurada no servidor Rocky Linux.

Se a autenticação baseada em chave foi bem-sucedida, continue aprendendo como tornar seu sistema ainda mais seguro desativando a autenticação baseada em senha do seu servidor SSH.

Passo 4 — Desativando a Autenticação por Senha no seu Servidor

Se conseguiu fazer login na sua conta usando SSH sem senha, configurou com sucesso a autenticação baseada em chave SSH para sua conta. No entanto, seu mecanismo de autenticação baseado em senha ainda está ativo, o que significa que seu servidor ainda está exposto a ataques de força bruta.

Antes de concluir as etapas desta seção, certifique-se de que você tenha configurado a autenticação baseada em chaves SSH para a conta root neste servidor, ou de preferência, que você tenha configurado a autenticação baseada em chaves SSH para uma conta não-root neste servidor com privilégios de sudo. Este passo irá bloquear logins baseados em senha, então garantir que você ainda será capaz de obter acesso administrativo é crucial.

Depois de confirmar que sua conta remota possui privilégios administrativos, faça login no seu servidor remoto com chaves SSH, seja como root ou com uma conta com privilégios de sudo. Em seguida, abra o arquivo de configuração do daemon SSH:

  1. sudo vi /etc/ssh/sshd_config

Dentro do arquivo, procure por uma diretiva chamada PasswordAuthentication. Isso pode estar comentado com um hash #. Pressione i para colocar o vi no modo de inserção e depois descomente a linha e defina o valor como no. Isso desabilitará sua capacidade de fazer login via SSH usando senhas de conta:

/etc/ssh/sshd_config
...
PasswordAuthentication no
...

Quando terminar de fazer as alterações, pressione ESC e depois :wq para escrever as alterações no arquivo e sair. Para implementar realmente essas mudanças, precisamos reiniciar o serviço sshd:

  1. sudo systemctl restart sshd

Como precaução, abra uma nova janela do terminal e teste se o serviço SSH está funcionando corretamente antes de fechar sua sessão atual:

  1. ssh username@remote_host

Depois de verificar que o serviço SSH está funcionando corretamente, você pode fechar com segurança todas as sessões atuais do servidor.

O daemon SSH no seu servidor Rocky Linux agora responde apenas às chaves SSH. A autenticação baseada em senha foi desabilitada com sucesso.

Conclusão

Agora você deve ter a autenticação baseada em chave SSH configurada no seu servidor, permitindo que você faça login sem fornecer uma senha de conta.

Se você gostaria de aprender mais sobre como trabalhar com SSH, dê uma olhada no nosso Guia Essencial do SSH.

Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-on-rocky-linux-9