9 min de leitura · Guia técnico
Solucionar erro 'Permission denied' no SSH ocorre quando há problemas de autenticação por chave pública após mudanças no sistema. A causa mais comum são permissões incorretas nos arquivos de chave ou configuração inadequada do ssh-agent. Para resolver este problema, siga estes passos:
- Verificar permissões dos arquivos de chave SSH
- Confirmar se a chave está carregada no ssh-agent
- Validar configuração do arquivo authorized_keys
- Testar conexão com modo verbose para diagnóstico
- Reconfigurar chaves SSH se necessário
Pré-requisitos
- Acesso ao terminal local com as chaves SSH
- Conhecimento do usuário e IP do servidor remoto
- Acesso alternativo ao servidor (console, painel de controle)
- Sistema operacional Linux ou macOS no cliente
- OpenSSH instalado (versão 7.0 ou superior recomendada)
Verificando permissões dos arquivos SSH
O primeiro passo para solucionar erro 'Permission denied' no SSH é verificar se as permissões dos arquivos estão corretas. O sistema SSH é rigoroso quanto às permissões por questões de segurança.
Verifique as permissões da sua chave privada:
ls -la ~/.ssh/id_rsa
O output esperado deve mostrar permissões 600:
-rw------- 1 usuario usuario 1679 Nov 15 10:30 /home/usuario/.ssh/id_rsa
Se as permissões estiverem incorretas, corrija com:
chmod 600 ~/.ssh/id_rsa
Para a chave pública, verifique e corrija se necessário:
chmod 644 ~/.ssh/id_rsa.pub
Também verifique as permissões do diretório .ssh:
chmod 700 ~/.ssh
Configurando o ssh-agent corretamente
O ssh-agent gerencia suas chaves SSH em memória, facilitando a autenticação. Após mudanças de chave, é comum que o agent não tenha a nova chave carregada.
Primeiro, verifique se o ssh-agent está rodando:
ssh-add -l
Se retornar "Could not open a connection to your authentication agent", inicie o agent:
eval $(ssh-agent)
Adicione sua chave privada ao agent:
ssh-add ~/.ssh/id_rsa
O output esperado confirma a adição:
Identity added: /home/usuario/.ssh/id_rsa (usuario@hostname)
Para adicionar automaticamente ao iniciar o sistema, adicione ao seu ~/.bashrc:
echo 'eval $(ssh-agent) > /dev/null && ssh-add ~/.ssh/id_rsa > /dev/null 2>&1' >> ~/.bashrc
Removendo chaves antigas do agent
Se você trocou de chave, remova as antigas do agent:
ssh-add -D
Em seguida, adicione apenas a nova chave:
ssh-add ~/.ssh/nova_chave_privada
Validando configuração do servidor remoto
O arquivo authorized_keys no servidor deve conter sua chave pública e ter permissões adequadas. Este é um ponto crítico para resolver problemas de autenticação SSH.
Se você tem acesso alternativo ao servidor, conecte via console e verifique:
ls -la ~/.ssh/authorized_keys
As permissões devem ser 600:
-rw------- 1 usuario usuario 394 Nov 15 10:30 /home/usuario/.ssh/authorized_keys
Corrija as permissões se necessário:
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
Verifique se sua chave pública está no arquivo:
cat ~/.ssh/authorized_keys
Compare com sua chave pública local:
cat ~/.ssh/id_rsa.pub
Adicionando chave pública ao servidor
Se a chave não estiver presente, adicione-a:
echo "sua_chave_publica_aqui" >> ~/.ssh/authorized_keys
Ou use o comando ssh-copy-id se tiver acesso temporário por senha:
ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@servidor
Diagnóstico avançado com modo verbose
O modo verbose do SSH fornece informações detalhadas sobre o processo de autenticação, essencial para identificar onde exatamente ocorre a falha.
Execute a conexão com máximo nível de debug:
ssh -vvv usuario@servidor
Analise o output procurando por estas linhas importantes:
debug1: Offering public key: /home/usuario/.ssh/id_rsa RSA SHA256:...
debug1: Server accepts key: /home/usuario/.ssh/id_rsa RSA SHA256:...
debug1: Authentication succeeded (publickey)
Se a chave for rejeitada, você verá:
debug1: Offering public key: /home/usuario/.ssh/id_rsa RSA SHA256:...
debug1: Authentications that can continue: publickey
Verificando configuração do servidor SSH
No servidor, verifique se a autenticação por chave está habilitada:
sudo grep -E "PubkeyAuthentication|AuthorizedKeysFile" /etc/ssh/sshd_config
Deve retornar:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Se precisar alterar, edite o arquivo e reinicie o SSH:
sudo systemctl restart sshd
Problemas comuns e como resolver
Erro: "Permission denied (publickey,gssapi-keyex,gssapi-with-mic)"
Causa: O servidor não consegue validar sua chave pública ou ela não está configurada corretamente.
Solução: Verifique se a chave pública está no arquivo authorized_keys do servidor e se as permissões estão corretas (600 para o arquivo, 700 para o diretório .ssh).
Erro: "Could not open a connection to your authentication agent"
Causa: O ssh-agent não está rodando ou não foi iniciado corretamente.
Solução: Execute eval $(ssh-agent) para iniciar o agent e depois ssh-add ~/.ssh/id_rsa para carregar sua chave.
Erro: "Bad permissions" nos arquivos SSH
Causa: Os arquivos de chave têm permissões muito abertas, o que o SSH considera inseguro.
Solução: Execute chmod 600 ~/.ssh/id_rsa para a chave privada, chmod 644 ~/.ssh/id_rsa.pub para a pública e chmod 700 ~/.ssh para o diretório.
Chave funciona em um servidor mas não em outro
Causa: A chave pública não foi adicionada ao arquivo authorized_keys do segundo servidor.
Solução: Copie o conteúdo de ~/.ssh/id_rsa.pub e adicione ao arquivo ~/.ssh/authorized_keys no servidor de destino.
Conexão funciona com senha mas não com chave
Causa: O servidor pode ter a autenticação por chave desabilitada ou configurada incorretamente.
Solução: Verifique no servidor se PubkeyAuthentication yes está configurado em /etc/ssh/sshd_config e reinicie o serviço SSH.
Perguntas frequentes sobre solucionar erro SSH
Por que recebo 'Permission denied' mesmo com a chave SSH correta?
O erro pode ocorrer por permissões incorretas nos arquivos de chave (devem ser 600 para chave privada e 644 para pública), chave não adicionada ao ssh-agent, ou arquivo authorized_keys com permissões inadequadas (deve ser 600).
Como verificar se minha chave SSH está sendo usada corretamente?
Execute 'ssh -v usuario@servidor' para ver logs detalhados da conexão. O output mostrará quais chaves estão sendo testadas e onde o processo falha. Também verifique com 'ssh-add -l' se a chave está carregada no agent.
Qual é a diferença entre 'Permission denied (publickey)' e outros erros SSH?
O erro 'Permission denied (publickey)' indica especificamente falha na autenticação por chave pública, enquanto 'Connection refused' indica que o serviço SSH não está rodando e 'Host key verification failed' indica problema com a chave do servidor.
Como restaurar acesso SSH quando perco a chave privada?
Se você tem acesso físico ou console do servidor, pode gerar um novo par de chaves e adicionar a pública ao arquivo ~/.ssh/authorized_keys. Caso contrário, precisará usar o console de emergência do provedor VPS para reconfigurar o acesso.
É seguro usar senha como fallback quando a chave SSH falha?
Não é recomendado manter autenticação por senha habilitada em produção, pois é menos segura que chaves SSH. Configure sempre um método de acesso de emergência através do console do provedor antes de desabilitar completamente a autenticação por senha.
Conclusão
- Sempre verifique permissões dos arquivos SSH antes de investigar outros problemas
- Use o modo verbose (-vvv) para diagnosticar exatamente onde a autenticação falha
- Mantenha um método de acesso alternativo configurado antes de fazer mudanças críticas no SSH
Leia também
- Instalando painel de gerenciamento de hospedagem VirtualMin.
- Como usar a ferramenta oficial de acesso remoto do Windows no PC e celular
- Como acessar o painel de gerenciamento dos meus Serviços.
Precisa de ajuda com configuração SSH no seu VPS?
Nossa equipe técnica especializada pode auxiliar na configuração segura do SSH e resolução de problemas de conectividade. Oferecemos suporte completo para servidores Linux com foco em segurança e performance.