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 na configuração de chaves SSH para um servidor Rocky Linux 9. As chaves SSH fornecem um método direto e seguro de 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 seu computador local):

  1. ssh-keygen

Por padrão, o ssh-keygen irá criar um par de chaves RSA de 2048 bits, o que é seguro o suficiente para a maioria dos casos de uso (você pode opcionalmente passar a bandeira -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ê tiver gerado anteriormente um par de chaves SSH, poderá ver o seguinte prompt:

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

Se você escolher sobrescrever a chave no disco, você não será capaz de autenticar usando a chave anterior. Tenha muito cuidado ao selecionar sim, pois esse é um processo destrutivo que não pode ser revertido.

Em seguida, você deverá ver a seguinte mensagem:

Output
Enter passphrase (empty for no passphrase):

Aqui você pode opcionalmente digitar uma frase de acesso segura, o que é altamente recomendado. Uma frase de acesso 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 autenticação. O próximo passo é colocar 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 uma ferramenta chamada ssh-copy-id. Esse método é altamente recomendado, se estiver disponível. Se você não tiver o ssh-copy-id disponível em sua máquina cliente, você pode usar um dos dois métodos alternativos a seguir (copiar via SSH com senha ou copiar 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 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.

Em seguida, a utilidade irá examinar sua conta local em busca da chave id_rsa.pub que criamos anteriormente. Quando encontrar a chave, solicitará a senha da conta do usuário remoto:

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 motivos 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ê deverá 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, sua chave id_rsa.pub foi enviada para a conta remota. Você pode prosseguir para Passo 3.

Copiando 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 encaminhando 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 sob a conta que estamos usando.

Em seguida, podemos enviar o conteúdo que encaminhamos para um arquivo chamado authorized_keys dentro deste diretório. Usaremos o símbolo de redirecionamento >> para anexar o conteúdo em vez de sobrescrevê-lo. Isso nos permitirá adicionar chaves sem destruir quaisquer chaves adicionadas anteriormente.

O comando completo parece com isto:

  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

Isto 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, você deverá 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 até Passo 3 se isso for bem-sucedido.

Copiando Chave Pública Manualmente

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

Vamos 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, verifique se o diretório ~/.ssh existe. Este comando criará o diretório se necessário, ou não fará nada se 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 public_key_string pela saída do comando cat ~/.ssh/id_rsa.pub que você executou em seu sistema local. Deve começar com ssh-rsa AAAA....

Finalmente, 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ê estiver 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 sammy, mas você deve substituir o nome de usuário apropriado no comando acima.

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

Passo 3 — Fazendo Login no Seu Servidor Rocky Linux Usando Chaves SSH

Se você concluiu com sucesso um dos procedimentos acima, agora deve ser capaz de 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), você 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 yes e pressione ENTER para continuar.

Se você não forneceu uma frase de acesso ao criar seu par de chaves no passo 1, será conectado imediatamente. Se forneceu uma frase de acesso, será solicitado a digitá-la agora. Após a autenticação, uma nova sessão de shell deve ser aberta para você com a conta configurada no servidor Rocky Linux.

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

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

Se você conseguiu fazer login na sua conta usando SSH sem uma senha, configurou com sucesso a autenticação baseada em chave SSH para sua conta. No entanto, o 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 a autenticação baseada em chave SSH configurada para a conta root neste servidor ou, preferencialmente, que você tenha a autenticação baseada em chave SSH configurada para uma conta não root neste servidor com privilégios sudo. Esta etapa irá restringir o acesso por login baseado em senha, garantindo que você ainda terá acesso administrativo é crucial.

Após 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 descomente a linha, definindo o valor como no. Isso desabilitará a 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 gravar as alterações no arquivo e sair. Para implementar efetivamente essas alterações, precisamos reiniciar o serviço sshd:

  1. sudo systemctl restart sshd

Como precaução, abra uma nova janela de 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 ainda está funcionando corretamente, você pode fechar com segurança todas as sessões de servidor atuais.

O daemon SSH no seu servidor Rocky Linux agora responde apenas às chaves SSH. A autenticação baseada em senha foi desativada 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