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):
- 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:
OutputGenerating 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:
OutputEnter 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:
OutputYour 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:
- ssh-copy-id username@remote_host
Você pode ver a seguinte mensagem:
OutputThe 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:
OutputNumber 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:
- 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:
OutputThe 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:
Outputusername@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:
- cat ~/.ssh/id_rsa.pub
Você verá o conteúdo da chave, que deve se parecer com isso:
Outputssh-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:
- 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:
- 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:
- 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
:
- 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:
- 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:
OutputThe 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:
- 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:
...
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
:
- 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:
- 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