Poupe até 53% em Servidores VPS, escolha agora. Oferta limitada.

Otimizar SSH com chave pública no Rocky Linux 9

16 min de leitura  ·  Guia técnico

Restringir acesso SSH por chave pública no Rocky Linux 9 significa configurar o servidor para aceitar apenas conexões autenticadas via par de chaves criptográficas, desabilitando o login por senha. Para aplicar essa configuração, siga estes passos:

  1. Gere um par de chaves Ed25519 na máquina cliente com ssh-keygen.
  2. Copie a chave pública para o servidor com ssh-copy-id ou manualmente.
  3. Ajuste as permissões do diretório ~/.ssh e do arquivo authorized_keys.
  4. Edite o arquivo /etc/ssh/sshd_config para habilitar autenticação por chave e desabilitar senha.
  5. Reinicie o serviço sshd e teste a conexão em uma nova sessão antes de fechar a atual.

Pré-requisitos para configurar autenticação SSH por chave pública

  • Servidor com Rocky Linux 9 instalado e atualizado (dnf update -y).
  • Acesso root ou usuário com privilégios sudo no servidor.
  • OpenSSH Server instalado e em execução (sshd ativo).
  • Cliente SSH disponível na máquina local: Linux/macOS (nativo), Windows 10/11 (OpenSSH nativo no PowerShell) ou PuTTY.
  • Conexão SSH ativa com autenticação por senha ainda funcionando — não feche esta sessão durante o processo.
  • Endereço IP do servidor e nome do usuário de destino em mãos.

Gerando o par de chaves SSH Ed25519 na máquina cliente

A autenticação SSH por chave pública funciona com um par criptográfico: a chave privada fica na máquina do administrador e a chave pública é instalada no servidor. O algoritmo Ed25519 é o recomendado atualmente por oferecer segurança elevada com chaves menores e operações mais rápidas do que RSA 2048.

Execute o comando abaixo na sua máquina local (não no servidor):

ssh-keygen -t ed25519 -C "admin@meuservidor-rocky9" -f ~/.ssh/id_ed25519_rocky

O parâmetro -C adiciona um comentário identificador à chave — útil quando você gerencia múltiplos servidores. O parâmetro -f define o nome do arquivo, evitando sobrescrever chaves existentes.

Ao rodar este comando, você verá a seguinte saída e será solicitado a definir uma passphrase:

Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/usuario/.ssh/id_ed25519_rocky
Your public key has been saved in /home/usuario/.ssh/id_ed25519_rocky.pub
The key fingerprint is:
SHA256:xXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxX admin@meuservidor-rocky9

Atenção: Defina uma passphrase forte para proteger a chave privada. Mesmo que alguém obtenha o arquivo da chave privada, não conseguirá usá-la sem a passphrase.

Dois arquivos serão criados: id_ed25519_rocky (chave privada — nunca compartilhe) e id_ed25519_rocky.pub (chave pública — será copiada para o servidor).

Copiando a chave pública para o Rocky Linux 9

Com o par de chaves gerado, o próximo passo é instalar a chave pública no servidor. O método mais simples usa o utilitário ssh-copy-id, disponível em sistemas Linux e macOS:

ssh-copy-id -i ~/.ssh/id_ed25519_rocky.pub usuario@IP_DO_SERVIDOR

Ao rodar este comando, você verá:

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/usuario/.ssh/id_ed25519_rocky.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
Number of key(s) added: 1

Now try logging into the machine, with:   "ssh -i ~/.ssh/id_ed25519_rocky usuario@IP_DO_SERVIDOR"
and check to make sure that only the key(s) you wanted were added.

Se você estiver no Windows usando PowerShell, o ssh-copy-id pode não estar disponível. Nesse caso, copie manualmente:

type $env:USERPROFILE\.ssh\id_ed25519_rocky.pub | ssh usuario@IP_DO_SERVIDOR "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Para verificar se a chave foi instalada corretamente, conecte-se ao servidor e inspecione o arquivo:

cat ~/.ssh/authorized_keys

A saída deve exibir a linha com ssh-ed25519 AAAA... seguida do comentário que você definiu.

Ajustando permissões do diretório .ssh no servidor

O OpenSSH é rigoroso quanto às permissões de arquivos — se as permissões estiverem incorretas, a autenticação por chave será silenciosamente recusada. Este é um dos erros mais comuns ao configurar chaves SSH no Rocky Linux 9.

Conectado ao servidor, execute:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
ls -la ~/.ssh/

A saída esperada deve mostrar:

drwx------. 2 usuario usuario  29 Jan 15 10:00 .
drwx------. 5 usuario usuario 128 Jan 15 10:00 ..
-rw-------. 1 usuario usuario 115 Jan 15 10:00 authorized_keys

O diretório .ssh deve ter permissão 700 (somente o dono lê, escreve e executa) e o arquivo authorized_keys deve ter permissão 600 (somente o dono lê e escreve). Qualquer permissão mais aberta fará o SSH ignorar o arquivo.

Se o servidor usa SELinux (padrão no Rocky Linux 9), verifique também o contexto de segurança:

ls -Z ~/.ssh/authorized_keys

O contexto deve ser system_u:object_r:ssh_home_t:s0. Se estiver incorreto, restaure com:

restorecon -Rv ~/.ssh/

Configurando o sshd_config para restringir acesso por chave pública

Com a chave instalada e as permissões corretas, é hora de editar o arquivo de configuração do OpenSSH para habilitar a autenticação por chave e, opcionalmente, desabilitar a autenticação por senha. Esta etapa é o núcleo da restrição de acesso SSH no Rocky Linux 9.

Atenção: Antes de editar o sshd_config, abra uma nova janela de terminal e confirme que consegue conectar via chave. Nunca feche a sessão ativa antes de validar o acesso alternativo.

Faça um backup do arquivo original:

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Abra o arquivo para edição:

vi /etc/ssh/sshd_config

Localize e ajuste as seguintes diretivas (descomente removendo o # se necessário):

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM yes
PermitRootLogin prohibit-password

Explicação de cada diretiva:

  • PubkeyAuthentication yes — habilita explicitamente a autenticação por chave pública.
  • AuthorizedKeysFile .ssh/authorized_keys — define o caminho do arquivo com as chaves autorizadas.
  • PasswordAuthentication no — desabilita login por senha após confirmar que a chave funciona.
  • ChallengeResponseAuthentication no — desabilita autenticação por desafio-resposta (inclui senhas via PAM).
  • PermitRootLogin prohibit-password — permite login root apenas via chave, nunca por senha.

Valide a sintaxe do arquivo antes de reiniciar o serviço:

sshd -t

Se não houver saída, a configuração está correta. Reinicie o serviço:

systemctl restart sshd

Verifique se o serviço está ativo:

systemctl status sshd
● sshd.service - OpenSSH server daemon
     Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: enabled)
     Active: active (running) since Wed 2025-01-15 10:05:00 UTC; 3s ago

Testando a conexão SSH com chave pública no Rocky Linux 9

Antes de encerrar qualquer sessão ativa, valide o acesso por chave em uma nova janela de terminal. Este passo é crítico para evitar ser bloqueado fora do servidor.

Na máquina cliente, execute:

ssh -i ~/.ssh/id_ed25519_rocky -v usuario@IP_DO_SERVIDOR

O parâmetro -v ativa o modo verbose, exibindo detalhes do processo de autenticação. Procure pelas linhas:

debug1: Offering public key: /home/usuario/.ssh/id_ed25519_rocky ED25519 SHA256:...
debug1: Server accepts key: /home/usuario/.ssh/id_ed25519_rocky ED25519 SHA256:...
Authenticated to IP_DO_SERVIDOR ([IP_DO_SERVIDOR]:22) using "publickey".

Se a conexão for estabelecida sem solicitar senha (apenas a passphrase da chave, se definida), a configuração está funcionando corretamente.

Para simplificar conexões futuras, configure o arquivo ~/.ssh/config na máquina cliente:

Host rocky9-servidor
    HostName IP_DO_SERVIDOR
    User usuario
    IdentityFile ~/.ssh/id_ed25519_rocky
    IdentitiesOnly yes

Com esta configuração, basta executar ssh rocky9-servidor para conectar. Para mais detalhes sobre como acessar servidores VPS Linux, consulte o guia Acessando servidores VPS Linux da AviraHost.

Configurando o firewall para proteger a porta SSH no Rocky Linux 9

Restringir a autenticação SSH por chave pública é uma camada de segurança fundamental, mas combiná-la com regras de firewall eleva significativamente a proteção do servidor. O Rocky Linux 9 usa o firewalld como gerenciador de firewall padrão.

Verifique se o firewalld está ativo:

systemctl status firewalld

Confirme que a porta SSH está liberada:

firewall-cmd --list-services
cockpit dhcpv6-client ssh

Se você alterou a porta padrão do SSH (recomendado para reduzir bots), atualize o firewall:

firewall-cmd --permanent --remove-service=ssh
firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload

Se quiser restringir o acesso SSH apenas a IPs específicos (por exemplo, o IP do seu escritório), use rich rules:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="SEU_IP/32" service name="ssh" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" service name="ssh" drop'
firewall-cmd --reload

Atenção: Substitua SEU_IP pelo seu endereço IP real antes de executar. Aplicar estas regras sem o IP correto bloqueará seu próprio acesso ao servidor. Veja também as Dicas de Otimização de Servidores Linux para outras práticas recomendadas de segurança.

Problemas comuns e como resolver

Sintoma: Permission denied (publickey) ao tentar conectar

Causa: As permissões do diretório ~/.ssh ou do arquivo authorized_keys estão incorretas, ou a chave pública não foi copiada corretamente para o servidor. O OpenSSH ignora silenciosamente arquivos com permissões muito abertas.
Solução: Conecte ao servidor por outro método (console VNC/KVM no painel da hospedagem) e execute chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys. Verifique também se o conteúdo de authorized_keys corresponde exatamente ao conteúdo do arquivo .pub gerado. No Rocky Linux 9 com SELinux ativo, execute restorecon -Rv ~/.ssh/ para restaurar o contexto de segurança correto.

Sintoma: SSH continua pedindo senha mesmo após configurar a chave

Causa: A diretiva PasswordAuthentication ainda está como yes no sshd_config, ou existe um arquivo de configuração adicional em /etc/ssh/sshd_config.d/ que sobrescreve a configuração principal.
Solução: Verifique se há arquivos no diretório de configuração adicional com ls /etc/ssh/sshd_config.d/ e inspecione cada um. No Rocky Linux 9, o arquivo 50-redhat.conf pode existir neste diretório e sobrescrever configurações. Edite ou remova as diretivas conflitantes e reinicie o sshd com systemctl restart sshd.

Sintoma: Serviço sshd falha ao reiniciar após editar o sshd_config

Causa: Erro de sintaxe no arquivo /etc/ssh/sshd_config, como espaços extras, caracteres inválidos ou diretivas digitadas incorretamente.
Solução: Execute sshd -t para validar a sintaxe antes de reiniciar. O comando exibirá a linha exata com o erro, por exemplo: /etc/ssh/sshd_config line 42: Bad configuration option: PasswordAuthenticaton. Corrija o erro, valide novamente e então reinicie o serviço. Se o serviço já estiver parado, restaure o backup com cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config.

Sintoma: Chave SSH funciona mas conexão cai após alguns minutos de inatividade

Causa: O servidor ou o cliente encerram conexões ociosas por timeout. No servidor, as diretivas ClientAliveInterval e ClientAliveCountMax controlam esse comportamento.
Solução: Adicione ao /etc/ssh/sshd_config as linhas ClientAliveInterval 60 e ClientAliveCountMax 3. Isso faz o servidor enviar um sinal keepalive a cada 60 segundos e encerrar a conexão somente após 3 falhas consecutivas. Reinicie o sshd após a alteração.

Perguntas frequentes sobre autenticação SSH por chave pública

É seguro desativar a autenticação por senha no SSH?

Sim, desde que você tenha testado e confirmado que o acesso por chave pública funciona corretamente antes de desativar a senha. A autenticação por chave pública é criptograficamente mais forte do que senhas, pois exige posse da chave privada, que nunca trafega pela rede. Sempre mantenha uma cópia de segurança da chave privada em local seguro.

O que acontece se eu perder minha chave privada SSH?

Se você perder a chave privada e não tiver outro método de acesso configurado (como console VNC/KVM ou outro usuário com chave válida), ficará bloqueado fora do servidor. Por isso, é essencial manter backups da chave privada em local seguro e, idealmente, configurar acesso de emergência via console no painel da hospedagem antes de desativar a autenticação por senha.

Posso usar a mesma chave SSH em vários servidores?

Tecnicamente sim, mas não é recomendado do ponto de vista de segurança. Se a chave privada for comprometida, todos os servidores que a utilizam ficam expostos. A prática recomendada é gerar um par de chaves distinto para cada servidor ou grupo de servidores críticos, facilitando a revogação pontual em caso de incidente.

Como adicionar múltiplos usuários com chaves SSH diferentes no mesmo servidor?

Cada usuário do sistema possui seu próprio arquivo ~/.ssh/authorized_keys. Para adicionar um novo usuário com chave própria, crie o usuário com useradd, crie o diretório ~/.ssh com permissão 700 e adicione a chave pública no arquivo authorized_keys com permissão 600. Cada linha do arquivo authorized_keys corresponde a uma chave autorizada distinta.

Como verificar se a autenticação por chave SSH está funcionando antes de desativar a senha?

Abra uma nova sessão de terminal sem fechar a sessão atual e tente conectar com o comando ssh -i ~/.ssh/id_ed25519_rocky usuario@ip-do-servidor. Se a conexão for estabelecida sem solicitar senha, a chave está funcionando corretamente. Só então edite o sshd_config para desativar PasswordAuthentication. Nunca feche a sessão ativa antes de confirmar o acesso alternativo.

Conclusão

Configurar a autenticação SSH por chave pública no Rocky Linux 9 é uma das medidas de segurança mais eficazes para proteger o acesso remoto ao servidor. Ao seguir este guia, você:

  • Gerou um par de chaves Ed25519 seguro e instalou a chave pública no servidor com as permissões corretas, incluindo o contexto SELinux necessário no Rocky Linux 9.
  • Configurou o sshd_config para aceitar apenas autenticação por chave, desabilitando senhas e validando a sintaxe antes de reiniciar o serviço.
  • Testou a conexão em uma nova sessão antes de encerrar a sessão ativa, evitando o risco de bloqueio, e aprendeu a diagnosticar os erros mais comuns neste processo.

Leia também

Precisa de ajuda com SSH e segurança no seu servidor?

Configurar autenticação por chave pública é mais simples quando você tem uma infraestrutura confiável como base. Os servidores VPS da AviraHost rodam Rocky Linux 9 e outras distribuições enterprise, com acesso root completo e suporte técnico disponível para auxiliar na configuração inicial de segurança.

Conheça os planos de VPS da AviraHost

  • 0 Os usuários acharam isso útil
  • SSH, chave-publica, Rocky Linux, segurança, AviraHost, autenticação, servidor
Esta resposta foi útil?

Artigos Relacionados

Guia Completo: Como escolher o melhor plano de hospedagem para o seu site

Escolher o plano de hospedagem ideal para o seu site é fundamental para garantir seu bom...

Lista Prática: 5 Vantagens de ter SSL gratuito no seu site

Ter um certificado SSL no seu site não é apenas uma questão de segurança, mas também uma...

Comparativo: Hospedagem de sites vs. VPS: qual é a melhor opção?

Quando se trata de escolher entre hospedagem compartilhada ou VPS, as opções variam de acordo...

Dicas de Otimização de Servidores Linux

Dicas de Otimização de Servidores Linux Servidores Linux são amplamente utilizados por sua...

Como Implementar Soluções Eficientes para Melhorar a Gestão de Serviços Online

Como Implementar Soluções Eficientes para Melhorar a Gestão de Serviços Online...